def getJobModel(appObj): global jobModel if jobModel is None: jobModel = appObj.flastRestPlusAPIObject.model('Job', { 'name': fields.String(default=''), 'command': fields.String(default=''), 'enabled': fields.Boolean(default=False,description='Is auto scheduling enabled - otherwise manual run only'), 'repetitionInterval': fields.String(default='',description='How the job is scheduled to run'), 'nextScheduledRun': fields.DateTime(dt_format=u'iso8601', description='Next scheudled run'), 'guid': fields.String(default='',description='Unique identifier for this job'), 'creationDate': fields.DateTime(dt_format=u'iso8601', description='Time job record was created'), 'lastUpdateDate': fields.DateTime(dt_format=u'iso8601', description='Last time job record was changed (excluding runs)'), 'lastRunDate': fields.DateTime(dt_format=u'iso8601', description='Last time job record was run'), 'lastRunReturnCode': fields.Integer(default=None,description='Return code for the last execution of this job or -1 for timed out'), 'lastRunExecutionGUID': fields.String(default='',description='Unique identifier for the last job execution for this job'), 'mostRecentCompletionStatus': fields.String(default='Unknown',description='READONLY - Success, Fail or Unknown. Success or Fail if the job has run in last 25 hours, Unknown otherwise'), 'pinned': fields.Boolean(default=False,description='Pin job to dashboard'), 'overrideMinutesBeforeMostRecentCompletionStatusBecomesUnknown': fields.Integer(default=None,description='Override global number of minutes a job has not been run before a job is considered to have Unknown status for this job.'), 'StateChangeSuccessJobGUID': fields.String(default=None,description='GUID of job to call when this jobs state changes to Success'), 'StateChangeFailJobGUID': fields.String(default=None,description='GUID of job to call when this jobs state changes to Fail'), 'StateChangeUnknownJobGUID': fields.String(default=None,description='GUID of job to call when this jobs state changes to Unknown'), 'StateChangeSuccessJobNAME': fields.String(default=None,description='READONLY - Name of job to call when this jobs state changes to Success'), 'StateChangeFailJobNAME': fields.String(default=None,description='READONLY - Name of job to call when this jobs state changes to Fail'), 'StateChangeUnknownJobNAME': fields.String(default=None,description='READONLY - Name of job to call when this jobs state changes to Unknown'), }) return jobModel
class ContatoDto: api = Namespace('contatos', description='Operações com contatos') contatoinsert = api.model( 'contato', { 'valor': fields.String(required=True, description='valor contato'), 'tipocontato_id': fields.Integer(required=True, description='id do tipo contato'), 'fornecedor_id': fields.Integer(required=True, description='id do fornecedor'), }) contatolista = api.model( 'contatos', { 'id': fields.String(description='id do contato'), 'valor': fields.String(required=True, description='valor contato'), 'tipocontato_id': fields.Integer(required=True, description='id do tipo contato'), 'fornecedor_id': fields.Integer(required=True, description='id do fornecedor'), 'ativo': fields.Boolean(description='status do contato'), }) contatoupdate = api.model( 'contatoupdate', { 'valor': fields.String(description='valor contato'), 'tipocontato_id': fields.Integer(description='id do tipo contato'), 'ativo': fields.Boolean(description='status do contato'), })
class AccountDto: account = api.model( 'user account', { 'error': fields.Boolean(default=False, description=''), 'message': fields.String(description='message'), 'public_id': fields.String(description='user identifier', example='729528d3-a7d3-4fef-9004-056919d97a5b'), 'username': fields.String(required=True, description='username'), 'email': fields.String(required=True, description='user email address'), 'activated': fields.Boolean(description='user account activation status'), 'blocked': fields.Boolean(description='user account blocked status'), 'firstname': fields.String(description='user firstname'), 'lastname': fields.String(description='user lastname'), 'registered': fields.DateTime(description='user registration date') })
class UserDto: """User DTO""" api = Namespace('user', description='user related operations') signup = api.model('signup', { 'email': fields.String(required=True, description='user email address'), 'username': fields.String(required=True, description='user username'), 'password': fields.String(required=True, description='user password'), 'hire_date': fields.Date(required=True, description='user hire date') }) lookup = api.model('lookup', { 'id': fields.Integer(description='user identifier', readonly=True), 'email': fields.String(required=True, description='user email address'), 'username': fields.String(required=True, description='user username'), 'hire_date': fields.Date(required=True, description='user hire date'), 'admin': fields.Boolean(required=True, description='is user admin') }) profile = api.model('profile', { 'email': fields.String(description='user email address'), 'username': fields.String(description='user username'), 'hire_date': fields.Date(description='user hire date'), 'admin': fields.Boolean(description='is user admin'), 'department_id': fields.Integer(description='department id'), }) manager = api.model('user_manager_relationship', { 'manager_id': fields.Integer(description='manger id', required=True) })
class UsuarioDto: api = Namespace('usuarios', description='Operações com usuários') usuarioinsert = api.model( 'usuarioinsert', { 'login': fields.String(required=True), 'nome': fields.String(required=True), 'senha': fields.String(required=True), 'perfil_id': fields.Integer(required=True, description='id do perfil') }) usuariolist = api.model( 'usuariolist', { 'id': fields.Integer(readonly=True), 'login': fields.String(required=True), 'nome': fields.String(required=True), 'ativo': fields.Boolean(), 'uri': fields.Url('api.usuarios_usuario_id'), 'perfil_id': fields.Integer(description='id do perfil') }) usuarioupdate = api.model( 'usuarioupdate', { 'login': fields.String(required=False), 'nome': fields.String(required=False), 'senha': fields.String(required=False), 'perfil_id': fields.Integer(required=False, description='id do perfil'), 'ativo': fields.Boolean(required=False, description='inativa/ativa usuário'), })
class UsuarioDto: api = Namespace('usuarios', description='Operações com usuários') usuarioinsert = api.model('usuarioinsert', { 'login': fields.String(required=True), 'nome' : fields.String(required=True), 'senha': fields.String(required=True), 'perfil_id': fields.Integer(required=True, description='id do perfil') }) usuariolist = api.model('usuariolist', { 'id' : fields.Integer(readonly=False), 'login': fields.String(required=False), 'nome' : fields.String(required=False), 'ativo': fields.Boolean(), 'perfil_id': fields.Integer( description='id do perfil') }) usuarioListRetorno = api.model('usuarioListRetorno', { 'id' : fields.Integer(readonly=True), 'login': fields.String(required=True), 'nome' : fields.String(required=True), 'ativo': fields.Boolean(), 'perfil_id': fields.Integer( description='id do perfil'), 'status': fields.String(required=False, description='status da atualização do usuário'), 'message': fields.String(required=False, description='descrição do resultado da atualização'), }) usuarioupdate = api.model('usuarioupdate', { 'login': fields.String(required=False), 'nome' : fields.String(required=False), 'senha': fields.String(required=False), 'perfil_id': fields.Integer(required=False, description='id do perfil'), 'ativo': fields.Boolean(required=False,description='inativa/ativa usuário'), })
class PhoneDto: """ DTO Phone """ api = Namespace("Phone", description="Endpoints API Agente Virtual") phone_remove = api.model('phone_remove', { 'phone_id': fields.Integer(required=True, description="Id do telefone"), }) phone_post = api.model( 'phone_post', { 'phone_number': fields.String(required=True, description="Número de telefone"), 'available': fields.Boolean(description="Disponível para discagem"), }) phone = api.model( 'Phone', { 'phone_id': fields.Integer(required=True, description="Id do telefone PHONE"), 'phone_number': fields.String(required=True, description="Número de telefone"), 'available': fields.Boolean(description="Disponível para discagem"), })
class EmployeeDTO: api = Namespace('employee', description='Endpoint to manage Employee') new_employee = api.model('new_employee', { 'firstName': fields.String(required=True, description='First Name of employee'), 'lastName': fields.String(required=False, description='Last Name of employee'), 'email': fields.String(required=True, description='Email ID of employee'), 'designation': fields.String(required=False, description='Designation of employee'), 'DOB': fields.Date(required=True, description='Date of Birth of employee'), 'active': fields.Boolean(required=True, description='Active state of employee'), 'company': fields.Integer(required=True, description='Company ID where an employee is working'), }) employees = api.model('employees', { 'eId': fields.Integer(required=True, description='Id of employee'), 'firstName': fields.String(required=True, description='First Name of employee'), 'lastName': fields.String(required=False, description='Last Name of employee'), 'email': fields.String(required=True, description='Email ID of employee'), 'designation': fields.String(required=False, description='Designation of employee'), 'DOB': fields.Date(required=True, description='Date of Birth of employee'), 'active': fields.Boolean(required=True, description='Active state of employee'), 'company': fields.List(fields.Nested(api.model('employee', { 'cId': fields.Integer(required=True, description='Id of the company'), 'name': fields.String(required=True, description='Name of the Company'), 'address': fields.List(fields.Nested(api.model('address', {'aId': fields.Integer(required=False, description='Id of Address'), 'doorNo': fields.String(required=False), 'streetName': fields.String(required=False), 'city': fields.String(required=True), 'state': fields.String(required=True), 'country': fields.String(required=True), 'pincode': fields.String(required=True), }), required=True)), 'latitude': fields.String(required=False, description='Latitude of company location'), 'longitude': fields.String(required=False, description='Longitude of company location') }))) # 'company': fields.String() }) update_employee = api.model('update_employee', { 'eId': fields.Integer(required=True, description='Id of employee'), 'firstName': fields.String(required=True, description='First Name of employee'), 'lastName': fields.String(required=False, description='Last Name of employee'), 'email': fields.String(required=True, description='Email ID of employee'), 'designation': fields.String(required=False, description='Designation of employee'), 'DOB': fields.Date(required=True, description='Date of Birth of employee'), 'active': fields.Boolean(required=True, description='Active state of employee'), 'company': fields.Integer(required=True, description='Company ID where an employee is working'), })
class UserDto: api = Namespace('user', description='user related operations') user = api.model('user', { 'email': fields.String(required=True, description='email address'), 'is_admin': fields.Boolean(required=False, description='is_admin') }) post_user = api.model('user', { 'email': fields.String(required=True, description='email address'), 'password': fields.String(required=True, description='password'), 'is_admin': fields.Boolean(required=True, description='is_admin') })
def getAuthProviderModel(appObj): return appObj.flastRestPlusAPIObject.model( 'AuthProviderInfo', { 'guid': fields.String(default=None, description='Unique identifier of AuthProvider'), 'Type': fields.String(default='internal', description='Authorization provider type'), 'AllowUserCreation': fields.Boolean( default=False, description= 'Allow unknown logins to create new users. (Must be set to true at this level AND Tenant level to work)' ), 'AllowLink': fields.Boolean( default=None, description='Allow user to add this as a secondary auth method' ), 'AllowUnlink': fields.Boolean( default=None, description= 'Allow user to remove this auth method (As long as they have others availiable)' ), 'LinkText': fields.String( default=None, description= 'Text to show on link button in Security settings UI'), 'MenuText': fields.String( default='click here', description='Item text used in login method selection screen'), 'IconLink': fields.String( default=None, description='Image link used in login method selection screen' ), 'ConfigJSON': fields.String( default=None, description='Extra configuration required per auth type'), 'StaticlyLoadedData': fields.Raw(description='Other data loaded for this auth type'), 'saltForPasswordHashing': fields.String( default=None, description= 'Salt that can be used for password hashing (Depends on auth method)' ) })
def getTicketTypeModel(appObj): return appObj.flastRestPlusAPIObject.model( 'TicketType', { 'id': fields.String( default='DEFAULT', description='Unique identifier of User from login system'), 'tenantName': fields.String(default='DEFAULT', description='Tenant name for this ticket type'), 'ticketTypeName': fields.String(default='DEFAULT', description='Name displayed on admin screent'), 'description': fields.String(default='DEFAULT', description='Description of ticket type'), 'enabled': fields.Boolean( default=False, description='Can the ticket type currently be used'), 'welcomeMessage': fields.Nested(getCreateTicketTypeModel_welcomeMessage(appObj), skip_none=True), 'allowUserCreation': fields.Boolean( default=False, description= 'Allow unknown logins to create new users when using this ticket.' ), 'issueDuration': fields.Integer( default=None, description='Hours to issue ticket for on creation'), 'roles': fields.List( fields.String( default='DEFAULT', description='List of roles this tickert type will assign') ), 'postUseURL': fields.String( default='DEFAULT', description='URL to send user to after ticket is used'), 'postInvalidURL': fields.String( default='DEFAULT', description= 'URL to send user to after invalid or request validaiton'), RepositoryObjBaseClass.getMetadataElementKey(): fields.Nested( RepositoryObjBaseClass.getMetadataModel( appObj, flaskrestplusfields=fields)) })
def getJobCreationModel(appObj): return appObj.flastRestPlusAPIObject.model('JobCreation', { 'name': fields.String(default=''), 'command': fields.String(default=''), 'enabled': fields.Boolean(default=False,description='Is the job currently enabled'), 'repetitionInterval': fields.String(default='',description='How the job is scheduled to run'), 'pinned': fields.Boolean(default=False,description='Pin job to dashboard'), 'overrideMinutesBeforeMostRecentCompletionStatusBecomesUnknown': fields.Integer(default=None,description='Override global number of minutes a job has not been run before a job is considered to have Unknown status for this job. (0 for no override)'), 'StateChangeSuccessJobGUID': fields.String(default=None,description='GUID of job to call when this jobs state changes to Success'), 'StateChangeFailJobGUID': fields.String(default=None,description='GUID of job to call when this jobs state changes to Fail'), 'StateChangeUnknownJobGUID': fields.String(default=None,description='GUID of job to call when this jobs state changes to Unknown'), })
class TipoContatoDto: api = Namespace('tipocontatos', description='Operações com Tipo Contato dos Contatos') tipocontatoinsert = api.model('tipocontato', { 'nome': fields.String(required=True, description='nome do tipo contato'), }) tipocontatolista = api.model('tipocontatos', { 'id': fields.Integer(description='id do tipo contato'), 'nome': fields.String(description='nome do tipo contato'), 'ativo': fields.Boolean(description='status do tipo contato'), }) tipocontatoupdate = api.model('tipocontatoupdate', { 'nome': fields.String(description='nome do tipo contato'), 'ativo': fields.Boolean(description='status do tipo contato'), })
class PerfilDto: api = Namespace('perfis', description='Operações com Perfis de Usuario') perfil = api.model('perfil', { 'id' : fields.Integer(description = 'id do perfil'), 'nome': fields.String(required=True, description='nome do perfil'), 'uri' : fields.Url('api.perfis_perfil', readonly=True), 'ativo': fields.Boolean(description='ativo'), }) perfilinsert = api.model('perfilinsert', { 'nome': fields.String(required=True, description='nome do perfil'), }) perfilupdate = api.model('perfilupdate', { 'nome': fields.String(required=True, description='nome do perfil'), 'ativo': fields.Boolean(description='ativo'), })
class RemoveHySDSIOType(Resource): resp_model = hysds_io_ns.model( 'HySDS IO Removal Response(JSON)', { 'success': fields.Boolean( required=True, description="Boolean, whether the API was successful"), 'message': fields.String(required=True, description="message describing success or failure"), }) parser = hysds_io_ns.parser() parser.add_argument('id', required=True, type=str, help="HySDS IO ID") @hysds_io_ns.expect(parser) @hysds_io_ns.marshal_with(resp_model) def get(self): """Remove HySDS IO for the given ID""" _id = request.form.get('id', request.args.get('id', None)) if _id is None: return {'success': False, 'message': 'id must be supplied'}, 400 mozart_es.delete_by_id(index=HYSDS_IOS_INDEX, id=_id, ignore=404) app.logger.info('deleted %s from index: %s' % (_id, HYSDS_IOS_INDEX)) return { 'success': True, 'message': "removed %s from index %s" % (_id, HYSDS_IOS_INDEX) }
class Echo(Resource): """Echo.""" parser = api.parser() parser.add_argument('echo_str', required=True, type=str, help='string to echo') model = api.model( 'Echo', { 'success': fields.Boolean(description="success flag"), 'message': fields.String(description="echo output"), }) decorators = [limiter.limit("10/second")] @token_required @api.marshal_with(model) @api.doc(parser=parser, security='apikey') def get(self): echo_str = request.args.get('echo_str', None) if echo_str is None: return { 'success': False, 'message': "Missing echo_str parameter." }, 400 return {'success': True, 'message': "{}".format(echo_str)}
def getCreateTenantModel(appObj): return appObj.flastRestPlusAPIObject.model( 'CreateTenantInfo', { 'Name': fields.String(default='DEFAULT', description='Name and unique identifier of tenant'), 'Description': fields.String(default='DEFAULT', description='Description of tenant'), 'AllowUserCreation': fields.Boolean( default=False, description= 'Allow unknown logins to create new users. (Must be set to true at this level AND AuthPRovider level to work)' ), 'AuthProviders': fields.List(fields.Nested(getAuthProviderModel(appObj))), 'JWTCollectionAllowedOriginList': fields.List( fields.String( default='DEFAULT', description='Allowed origin to retrieve JWT tokens from')), 'TicketOverrideURL': fields.String(default='', description='Overrider URL for tickets'), 'TenantBannerHTML': fields.String( default='', description='HTML displayed in select auth and login screens'), 'SelectAuthMessage': fields.String( default='', description= 'Message displayed above buttons in select auth screen') })
class PrecoDto: api = Namespace('precos', description='Operações com Precos') precoinsert = api.model( 'preco', { 'preco_venda': fields.Float(required=True, description='Preço de venda'), 'produto_id': fields.Integer(required=True, description='Id do produto'), }) precolista = api.model( 'precolista', { 'id': fields.Integer(readonly=True), 'preco_venda': fields.Float(description='Preço de venda'), 'data_emissao': fields.DateTime(description='Data da movimentação'), 'usuario_id': fields.Integer(description='Id do usuario'), 'produto_id': fields.Integer(description='Id do produto'), 'ativo': fields.Boolean(description='inativa/ativa preço') }) precoproduto = api.model( 'precoproduto', { 'preco_venda': fields.Float(description='Preço de venda'), 'data_emissao': fields.DateTime(description='Data da movimentação'), })
class GetJobInfo(Resource): """Get info of job IDs.""" resp_model = job_ns.model('Job Info Response(JSON)', { 'success': fields.Boolean(required=True, description="if 'false' encountered exception; " "otherwise no errors occurred"), 'message': fields.String(required=True, description="message describing success or failure"), 'result': fields.Raw(required=True, description="Job Info Object") }) parser = job_ns.parser() parser.add_argument('id', type=str, required=True, help="Job ID") @job_ns.expect(parser) @job_ns.marshal_with(resp_model) def get(self): """Get complete info for submitted job based on id""" _id = request.form.get('id', request.args.get('id', None)) if _id is None: return { 'success': False, 'message': 'id must be supplied (as query param or url param)' }, 400 info = mozart_es.get_by_id(index=JOB_STATUS_INDEX, id=_id, ignore=404) if info['found'] is False: return { 'success': False, 'message': 'job info not found: %s' % _id }, 404 return { 'success': True, 'message': "", 'result': info['_source'] }
class GetQueueNames(Resource): """Get list of job queues and return as JSON.""" resp_model = queue_ns.model('Queue Listing Response(JSON)', { 'success': fields.Boolean(required=True, description="if 'false' encountered exception; " "otherwise no errors occurred"), 'message': fields.String(required=True, description="message describing success or failure"), 'result': fields.Raw(required=True, description="queue response") }) parser = queue_ns.parser() parser.add_argument('id', type=str, help="Job Type Specification ID") @queue_ns.expect(parser) @queue_ns.marshal_with(resp_model) def get(self): """Gets a listing of non-celery queues handling jobs.""" try: ident = request.form.get('id', request.args.get('id', None)) queues = mozart.lib.queue_utils.get_queue_names(ident) app.logger.warn("Queues: " + str(queues)) except Exception as e: message = "Failed to list job queues. {0}:{1}".format(type(e), str(e)) app.logger.warning(message) app.logger.warning(traceback.format_exc(e)) return {'success': False, 'message': message}, 500 return { 'success': True, 'message': "", 'result': queues }
class DdlDto: api = Namespace('ddl', description='Ledger related operations') ledger_create = api.model( 'ledger_create', { 'ledger_name': fields.String(required=False, description='Valid ledger name on QLDB', default=f"{config.LEDGER_NAME}"), }) ledgers = api.model( 'ledgers', { 'name': fields.String( required=True, description='ledger name', attribute='Name'), 'state': fields.String( required=True, description='ledger state', attribute="State"), 'creation_datetime': fields.DateTime(required=True, description='ledger creation datetime', attribute="CreationDateTime"), }) ledger = api.clone( 'ledger', ledgers, { 'arn': fields.String( required=True, description='ledger Arn', attribute='Arn'), 'deletion_protection': fields.Boolean(required=True, description='ledger deletion protection', attribute='DeletionProtection'), })
class GetContainerInfo(Resource): """Info a container""" resp_model = container_ns.model( 'Container Info Response(JSON)', { 'success': fields.Boolean(required=True, description="if 'false', encountered exception; " "otherwise no errors occurred"), 'message': fields.String(required=True, description="message describing success or failure"), 'result': fields.Raw(required=True, description="Container Info") }) parser = container_ns.parser() parser.add_argument('id', required=True, type=str, help="Container ID") @container_ns.expect(parser) @container_ns.marshal_with(resp_model) def get(self): """Get information on container by ID""" _id = request.form.get('id', request.args.get('id', None)) container = mozart_es.get_by_id(index=CONTAINERS_INDEX, id=_id, ignore=404) if container['found'] is False: return {'success': False, 'message': ""}, 404 return {'success': True, 'message': "", 'result': container['_source']}
class GetContainerRemove(Resource): """Remove a container""" resp_model = container_ns.model( 'Container Removal Response(JSON)', { 'success': fields.Boolean(required=True, description="if 'false', encountered exception; " "otherwise no errors occurred"), 'message': fields.String(required=True, description="message describing success or failure") }) parser = container_ns.parser() parser.add_argument('id', required=True, type=str, help="Container ID") @container_ns.expect(parser) @container_ns.marshal_with(resp_model) def get(self): """Remove container based on ID""" _id = request.form.get('id', request.args.get('id', None)) if _id is None: return {'success': False, 'message': 'id must be supplied'}, 400 mozart_es.delete_by_id(index=CONTAINERS_INDEX, id=_id) app.logger.info('Deleted container %s from index: %s' % (_id, CONTAINERS_INDEX)) return {'success': True, 'message': "job_spec deleted: %s" % _id}
class GetHySDSIOType(Resource): """Get list of job queues and return as JSON.""" resp_model = hysds_io_ns.model( 'HySDS IO Response(JSON)', { 'success': fields.Boolean( required=True, description="Boolean, whether the API was successful"), 'message': fields.String(required=True, description="message describing success or failure"), 'result': fields.Raw(required=True, description="HySDS IO Object") }) parser = hysds_io_ns.parser() parser.add_argument('id', required=True, type=str, help="HySDS IO Type ID") @hysds_io_ns.expect(parser) @hysds_io_ns.marshal_with(resp_model) def get(self): """Gets a HySDS-IO specification by ID""" _id = request.form.get('id', request.args.get('id', None)) if _id is None: return {'success': False, 'message': 'missing parameter: id'}, 400 hysds_io = mozart_es.get_by_id(index=HYSDS_IOS_INDEX, id=_id, ignore=404) if hysds_io['found'] is False: return {'success': False, 'message': ""}, 404 return {'success': True, 'message': "", 'result': hysds_io['_source']}
class RemoveHySDSIOType(Resource): """Remove job spec""" resp_model = hysds_io_ns.model( 'HySDS IO Removal Response(JSON)', { 'success': fields.Boolean(required=True, description="if 'false', encountered exception; " "otherwise no errors occurred"), 'message': fields.String(required=True, description="message describing success or failure"), }) parser = hysds_io_ns.parser() parser.add_argument('id', required=True, type=str, help="HySDS IO ID") @hysds_io_ns.expect(parser) @hysds_io_ns.marshal_with(resp_model) def get(self): """Remove HySDS IO for the given ID""" _id = request.form.get('id', request.args.get('id', None)) if _id is None: return { 'success': False, 'message': 'id parameter not included' }, 400 mozart_es.delete_by_id(index=HYSDS_IOS_INDEX, id=_id) app.logger.info('deleted %s from index: %s' % (_id, HYSDS_IOS_INDEX)) return {'success': True, 'message': "deleted hysds_io: %s" % _id}
def test_with_example(self): field = fields.Boolean(default=True, example=False) assert field.__schema__ == { "type": "boolean", "default": True, "example": False, }
class AuthDto: api = Namespace('account', description='Operations related to users') user = api.model( 'User', { 'id': fields.Integer(required=True, description="Id of the existing user"), 'name': fields.String(required=True, description="Name of the existing user"), 'photoUrl': fields.String(description="Profile picture of the existing user"), 'emailVerified': fields.Boolean( description= "Returns true if the user has verified his/her email") }) firebaseUser = api.model( 'FirebaseUser', { 'name': fields.String(required=True, description="Id of the existing user"), 'photoUrl': fields.String(description="Profile picture of the existing user") })
class ChannelDto: api = Namespace('ch', description='channel related operations') battlefield = api.model(name='bf', model={ 'battlefieldId': fields.Integer(readonly=True, description='Unique identifier'), 'battlefieldName': fields.String(description='The battlefield\'s name'), 'description': fields.String(description=''), 'geography': fields.List(fields.List(fields.Integer()), description='The map') }) player = api.model(name='player', model={ 'playerId': fields.Integer(readonly=True, required=False), 'playerName': fields.String(description='Player\'s name'), 'guest': fields.Boolean(readonly=True, required=False, description='Guest user or not'), 'highscore': fields.Integer(description='Highest point player scored'), 'dateEntered': fields.DateTime(readonly=True, required=False, description='Date player entered this channel'), 'class': fields.String(description='Player\'s class') }) channel = api.model(name='ch', model={ 'channelId': fields.Integer(readonly=True, description='Unique channel identifier'), 'battlefieldId': fields.Integer(description='Unique battlefield identifier'), 'battlefield': fields.Nested(model=battlefield, readonly=True, description='Channel\'s battlefield'), 'maximum': fields.Integer(description='Maximum participants number'), 'ranking': fields.List(fields.Nested(model=player), readonly=True, description='Player ranking for this channel'), 'participants': fields.List(fields.Nested(model=player), readonly=True, description='Players now participating this game') })
class ExerciseDto: name = api.model('name', {'de': fields.String(), 'en': fields.String()}) description = api.model('description', { 'de': fields.String(), 'en': fields.String() }) exercise = api.model( 'exercise', { 'id': fields.String(attribute='_id', description='exerciseID'), 'name': fields.Nested( name, description='name of the exercise in diferent languages'), 'description': fields.Nested( description, skip_none=True, description='description of the exercise in diferent languages' ), 'musclegroup': fields.List( fields.String, skip_none=True, description='list of musclegroups this exercise belongs to'), 'machine': fields.Boolean(description='exercise need a machine or not') })
class User: api = Namespace('User', description='User operations') model = api.model( 'user', { 'userid': fields.Integer(description='User identifier'), 'name': fields.String(description='Username'), 'email': fields.String(description='User email'), 'password': fields.String(description='User password'), 'is_active': fields.Boolean(description='User status (if is active, or not)'), 'is_admin': fields.Boolean(description='User privilege (if is admin, or not)') })