from flask_restplus import fields from backend.api import api_user, api_recorder, api_v1 generic_id_parser = api_v1.parser() generic_id_parser.add_argument('id', type=str, required=True, store_missing=False) user_model = api_user.model('User', { 'id': fields.String(required=True, description='The user\'s identifier'), 'first_name': fields.String(required=True, description='The user\'s first name'), 'last_name': fields.String(required=True, description='The user\'s last name'), 'email': fields.String(required=True, description='The user\'s email address'), 'nickname': fields.String(required=False, description='The user\'s nick name'), 'last_seen': fields.DateTime(required=False, description='Last time user logged in'), 'last_time_modified': fields.DateTime(required=False, description='Last time user was modified'), 'role': fields.String(required=False, description='Role a user might have (in addition to group memberships)'), 'effective_permissions': fields.List( fields.String(required=True), required=False, description="List of permissions (groups + (optional) role)." ), 'groups': fields.List( fields.Nested(api_user.model('user_group', {'id': fields.Integer(), 'name': fields.String()})), required=False, description='Group memberships.'), 'favorite_recorders': fields.List( fields.Nested(api_user.model('favorite_recorder', {'id': fields.Integer(), 'name': fields.String()})), required=False, description='Favorite recorders.'), }) recorder_model = api_recorder.model('Recorder', { 'id': fields.String(required=False, description='The recorder\'s identifier'), 'created_at': fields.DateTime(required=False, description='Creation date of the recorder'), 'last_time_modified': fields.DateTime(required=False, description='Creation date of the recorder'), 'name': fields.String(min_length=3, required=True, description='The recorder\'s name'), 'description': fields.String(required=False, description='The recorder\'s description'), 'locked': fields.Boolean(required=False, description='Indicates whether the recorder settings can be altered'), 'lock_message': fields.String(required=False, description='Optional: message explaining lock state'), 'offline': fields.Boolean(required=False, description='Should be set when recorder is disconnected for maintenance, etc.'), 'ip': fields.String(required=False, description='The recorder\'s IP address'), 'network_name': fields.String(required=False, description='The recorder\'s network name'), 'ssh_port': fields.Integer(required=True, default=22, description='The recorder\'s SSH port number'), 'telnet_port': fields.Integer(required=True, default=23, description='The recorder\'s telnet port number'), # 'use_telnet_instead_ssh': fields.Boolean(required=False, default=False, # description='If this is set, telnet will be used instead of ssh. ' # 'This might require specific commands.'), 'recorder_model': fields.Nested(api_recorder.model('recorder_model', {'id': fields.Integer(), 'name': fields.String(attribute="model_name", )}), required=False, allow_null=True, skip_none=False, description='Model of the recorder.'), 'room': fields.Nested(api_recorder.model('recorder_room', {'id': fields.Integer(), 'name': fields.String(), 'number': fields.String(), 'alternate_name': fields.String()}), r0equired=False, allow_null=True, skip_none=False, description='Room in which the recorder is located.'), 'virtual_commands': fields.List(fields.Nested(api_recorder.model('recorder_virtual_commands', {'id': fields.Integer(), 'name': fields.String()}))) }) 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'), 'alternative_name': fields.String(required=False, description='The recorder command\'s alternative name'), 'disabled': fields.Boolean(required=False, description='Indicates if the recorder command is disabled'), 'created_at': fields.DateTime(required=False, description='Creation date of the recorder'), 'last_time_modified': fields.DateTime(required=False), 'description': fields.String(required=False, description='The recorder command\'s description'), 'parameters': fields.Raw(required=True, description='The recorder parameters'), 'recorder_model': fields.Nested(api_recorder.model('recorder_command_models', {'id': fields.Integer(), 'name': fields.String(attribute="model_name", )})), }) 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'), 'created_at': fields.DateTime(required=False, description='Creation date of the recorder'), 'last_time_modified': fields.DateTime(required=False), 'notes': fields.String(required=False, description='The recorder model\'s notes'), 'requires_username': fields.Boolean(), 'requires_password': fields.Boolean(), 'recorders': fields.List(fields.Nested(api_recorder.model('recorder_model', {'id': fields.Integer(), 'name': fields.String(attribute="model_name", ), '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") })