|
@@ -0,0 +1,94 @@
|
|
|
|
|
+from flask_restful import Resource, reqparse
|
|
|
|
|
+from app.main.service.meters_service import (
|
|
|
|
|
+ get_meters, create_or_update_meters, delete_meter)
|
|
|
|
|
+from app.main.common.decorators import standardize_api_response
|
|
|
|
|
+from app.main.common.utils import is_a_valid_object_id
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def post_put_parser():
|
|
|
|
|
+ """Request parser for HTTP POST or PUT.
|
|
|
|
|
+ :returns: flask.ext.restful.reqparse.RequestParser object
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
|
|
+ parse = reqparse.RequestParser()
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'serialNumber', type=str, location='json', required=True)
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'name', type=str, location='json', required=True)
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'brand', type=str, location='json', required=True)
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'model', type=str, location='json', required=True)
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'phases', type=int, location='json')
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'active', type=bool, location='json')
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'address', type=str, location='json')
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'gpsLat', type=float, location='json')
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'gpsLong', type=float, location='json')
|
|
|
|
|
+ parse.add_argument(
|
|
|
|
|
+ 'installedDate', type=str, location='json')
|
|
|
|
|
+
|
|
|
|
|
+ return parse
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class MetersApi(Resource):
|
|
|
|
|
+
|
|
|
|
|
+ @standardize_api_response
|
|
|
|
|
+ def get(self):
|
|
|
|
|
+ return get_meters()
|
|
|
|
|
+
|
|
|
|
|
+ @standardize_api_response
|
|
|
|
|
+ def post(self):
|
|
|
|
|
+
|
|
|
|
|
+ parse = post_put_parser()
|
|
|
|
|
+ args = parse.parse_args()
|
|
|
|
|
+
|
|
|
|
|
+ serialNumber = args['serialNumber']
|
|
|
|
|
+ name = args['name']
|
|
|
|
|
+ brand = args['brand']
|
|
|
|
|
+ model = args['model']
|
|
|
|
|
+ phases = args['phases']
|
|
|
|
|
+ active = args['active']
|
|
|
|
|
+ address = args['address']
|
|
|
|
|
+ gpsLat = args['gpsLat']
|
|
|
|
|
+ gpsLong = args['gpsLong']
|
|
|
|
|
+ installedDate = args['installedDate']
|
|
|
|
|
+
|
|
|
|
|
+ return create_or_update_meters(
|
|
|
|
|
+ serialNumber, name, brand, model, phases,
|
|
|
|
|
+ active, address, gpsLat, gpsLong, installedDate)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class MeterApi(Resource):
|
|
|
|
|
+
|
|
|
|
|
+ @standardize_api_response
|
|
|
|
|
+ def put(self):
|
|
|
|
|
+ parse = post_put_parser()
|
|
|
|
|
+ args = parse.parse_args()
|
|
|
|
|
+
|
|
|
|
|
+ serialNumber = args['serialNumber']
|
|
|
|
|
+ name = args['name']
|
|
|
|
|
+ brand = args['brand']
|
|
|
|
|
+ model = args['model']
|
|
|
|
|
+ phases = args['phases']
|
|
|
|
|
+ active = args['active']
|
|
|
|
|
+ address = args['address']
|
|
|
|
|
+ gpsLat = args['gpsLat']
|
|
|
|
|
+ gpsLong = args['gpsLong']
|
|
|
|
|
+ installedDate = args['installedDate']
|
|
|
|
|
+
|
|
|
|
|
+ return create_or_update_meters(
|
|
|
|
|
+ serialNumber, name, brand, model, phases,
|
|
|
|
|
+ active, address, gpsLat, gpsLong, installedDate)
|
|
|
|
|
+
|
|
|
|
|
+ @standardize_api_response
|
|
|
|
|
+ def delete(self, meter_id):
|
|
|
|
|
+
|
|
|
|
|
+ if not is_a_valid_object_id(meter_id):
|
|
|
|
|
+ return {'error': 'Invalid meter id.'}
|
|
|
|
|
+
|
|
|
|
|
+ return delete_meter(meter_id)
|