Add device configuration route

master
esensar 2018-09-19 23:31:21 +02:00
parent c14b3a8bed
commit 3077e46dc5
5 changed files with 79 additions and 2 deletions

View File

@ -44,7 +44,8 @@ def add_resources():
DeviceRecordingResource, DeviceRecordingResource,
DeviceListResource, DeviceListResource,
DeviceTypeResource, DeviceTypeResource,
DeviceTypeListResource) DeviceTypeListResource,
DeviceConfigurationResource)
api.add_resource(AccountResource, '/v1/accounts/<int:account_id>') api.add_resource(AccountResource, '/v1/accounts/<int:account_id>')
api.add_resource(AccountListResource, '/v1/accounts') api.add_resource(AccountListResource, '/v1/accounts')
@ -57,6 +58,8 @@ def add_resources():
api.add_resource(DeviceTypeResource, api.add_resource(DeviceTypeResource,
'/v1/devices/types/<int:device_type_id>') '/v1/devices/types/<int:device_type_id>')
api.add_resource(DeviceTypeListResource, '/v1/devices/types') api.add_resource(DeviceTypeListResource, '/v1/devices/types')
api.add_resource(DeviceConfigurationResource,
'/v1/devices/<int:device_id>/configuration')
add_resources() add_resources()

View File

@ -1,7 +1,7 @@
from marshmallow import Schema, fields from marshmallow import Schema, fields
from webargs.flaskparser import use_args from webargs.flaskparser import use_args
from flasgger import swag_from from flasgger import swag_from
from flask import g from flask import g, request
import app.devices as devices import app.devices as devices
from app.api import ProtectedResource from app.api import ProtectedResource
@ -106,3 +106,15 @@ class DeviceListResource(ProtectedResource):
def get(self): def get(self):
return DevicesWrapperSchema().dump( return DevicesWrapperSchema().dump(
{'devices': devices.get_devices(g.current_account.id)}), 200 {'devices': devices.get_devices(g.current_account.id)}), 200
class DeviceConfigurationResource(ProtectedResource):
@swag_from('swagger/update_device_configuration_spec.yaml')
def put(self, device_id):
success = devices.set_device_configuration(device_id, request.json)
if success:
return '', 204
@swag_from('swagger/get_device_configuration_spec.yaml')
def get(self, device_id):
return devices.get_device_configuration(device_id), 200

View File

@ -0,0 +1,16 @@
Gets a device configuration
---
tags:
- Device
- Configuration
parameters:
- in: path
name: device_id
required: true
type: integer
description: Id of the device
responses:
200:
description: Success
schema:
type: object

View File

@ -0,0 +1,19 @@
Updates a device configuration
---
tags:
- Device
- Configuration
parameters:
- in: path
name: device_id
required: true
type: integer
description: Id of the device
- in: body
name: body
required: true
schema:
type: object
responses:
204:
description: Success

View File

@ -38,6 +38,33 @@ def create_device_type(name):
device_type.save() device_type.save()
def set_device_configuration(device_id, configuration_json):
"""
Tries to update configuration of device with given id
:param device_id: Id of device to change configuration
:param configuration_json: New configuration
:type device_id: int
:type configuration_json: JSON
:rtype: Boolean
"""
device = Device.get(id=device_id)
device.configuration = configuration_json
device.save()
def get_device_configuration(device_id):
"""
Tries to get configuration for device with given parameters.
:param device_id: Id of device
:type device_id: int
:returns: Configuration of given device
:rtype: JSON Configuration
"""
return Device.get(id=device_id).configuration
def get_device_recordings(device_id): def get_device_recordings(device_id):
""" """
Tries to get device recording for device with given parameters. Raises Tries to get device recording for device with given parameters. Raises