now scanning model difinietons and updating db entries

This commit is contained in:
2019-08-08 16:38:15 +02:00
parent 123eb65f8e
commit c0e56cf40d
12 changed files with 263 additions and 175 deletions

View File

@@ -7,6 +7,7 @@ Login through API does not start a new session, but instead returns JWT.
"""
import inspect
import pkgutil
from pprint import pprint
from flask_jwt_extended import jwt_required
from flask_restplus import fields, Resource
@@ -44,6 +45,30 @@ recorder_model = api_recorder.model('Recorder', {
description='Room in which the recorder is located.')
})
recorder_command_model = api_recorder.model('Recorder Command', {
'id': fields.String(required=False, description='The recorder command\'s identifier'),
'name': fields.String(required=True, description='The recorder command\'s name'),
'last_time_modified': fields.DateTime(required=False),
'description': fields.String(required=False, description='The recorder command\'s description'),
'parameters': fields.String(required=True, description='The recorder parameters'),
'recorder_model': fields.Nested(api_recorder.model('recorder_command_models',
{'id': fields.Integer(), 'name': fields.String()})),
})
recorder_model_model = api_recorder.model('Recorder Model', {
'id': fields.String(required=False, description='The recorder model\'s identifier'),
'name': fields.String(attribute="model_name", required=True, description='The recorder model\'s name'),
'last_time_modified': fields.DateTime(required=False),
'notes': fields.String(required=False, description='The recorder model\'s notes'),
'recorders': fields.List(fields.Nested(api_recorder.model('recorder_model',
{'id': fields.Integer(), 'name': fields.String(),
'network_name': fields.String(),
'ip': fields.String()})), required=False,
description='Model of the recorder.'),
'commands': fields.List(fields.Nested(recorder_command_model), attribute="recorder_commands")
})
# ==
@@ -119,30 +144,14 @@ class RecorderList(Resource):
if rec_model is not None:
api_recorder.payload["recorder_model"] = rec_model
else:
return "specified recorder model (id: {}) does not exist!".format(api_recorder.payload["recorder_model_id"]), 404
return "specified recorder model (id: {}) does not exist!".format(
api_recorder.payload["recorder_model_id"]), 404
recorder = Recorder(**api_recorder.payload)
db.session.add(recorder)
db.session.commit()
return recorder
recorder_model_model = api_recorder.model('Recorder Model', {
'id': fields.String(required=False, description='The recorder model\'s identifier'),
'name': fields.String(required=True, description='The recorder model\'s name'),
'notes': fields.String(required=False, description='The recorder model\'s notes'),
'recorders': fields.List(fields.Nested(api_recorder.model('recorder_model',
{'id': fields.Integer(), 'name': fields.String(),
'network_name': fields.String(),
'ip': fields.String()})), required=False,
description='Model of the recorder.'),
'commands': fields.List(fields.Nested(api_recorder.model('recorder_model_commands',
{'id': fields.Integer(), 'name': fields.String()})),
required=False,
description='Room in which the recorder is located.')
})
@api_recorder.route('/model/<int:id>')
@api_recorder.response(404, 'Recorder Model not found')
@api_recorder.param('id', 'The recorder model identifier')
@@ -157,10 +166,12 @@ class RecorderModelResource(Resource):
return recorder_model
api_recorder.abort(404)
recorder_model_parser = api_recorder.parser()
recorder_model_parser.add_argument('notes', type=str, required=True)
@jwt_required
@api_recorder.doc('update_recorder_model')
@api_recorder.expect(recorder_model_model)
@api_recorder.expect(recorder_model_parser)
@api_recorder.marshal_with(recorder_model_model)
def put(self, id):
"""Update a recorder_model given its identifier"""
@@ -173,32 +184,11 @@ class RecorderModelResource(Resource):
@api_recorder.route('/model')
class RecorderModelList(Resource):
#@jwt_required
@jwt_required
@api_recorder.doc('recorders')
@api_recorder.marshal_list_with(recorder_model_model)
def get(self):
models = r_a.get_defined_recorder_adapters()
return models
"""
List all recorder models
:return: recorder models
"""
return Recorder.get_all()
# ==
recorder_command_model = api_recorder.model('Recorder Command', {
'id': fields.String(required=False, description='The recorder command\'s identifier'),
'name': fields.String(required=True, description='The recorder command\'s name'),
'description': fields.String(required=False, description='The recorder command\'s description'),
'command': fields.String(required=True, description='The recorder command\'s name'),
'recorder_models': fields.List(fields.Nested(api_recorder.model('recorder_command_models',
{'id': fields.Integer(), 'name': fields.String()})),
required=False,
description='Recorder models associated with the command.'),
})
return RecorderModel.get_all()
@api_recorder.route('/command/<int:id>')