Example #1
0
def update_profile():
    """Update an user"""
    logging.info('[ROUTER]: Updating profile')
    body = request.get_json()
    identity = current_identity
    try:
        password = body.get('password', None)
        repeat_password = body.get('repeatPassword', None)
        if password is not None and repeat_password is not None and password == repeat_password:
            user = UserService.update_profile_password(body, identity)
        else:
            if 'role' in body:
                del body['role']
            name = body.get('name', None)
            country = body.get('country', None)
            institution = body.get('institution', None)
            if name is not None or country is not None or institution is not None:
                user = UserService.update_user(body, str(identity.id))
            else:
                return error(status=400, detail='Not updated')
    except UserNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize()), 200
Example #2
0
def create_user():
    """Create an user"""
    logging.info('[ROUTER]: Creating user')
    body = request.get_json()
    if request.headers.get('Authorization', None) is not None:
        @jwt_required()
        def identity():
            pass
        identity()
    identity = current_identity
    if identity:
        user_role = body.get('role', 'USER')
        if identity.role == 'USER' and user_role == 'ADMIN':
            return error(status=403, detail='Forbidden')
    else:
        body['role'] = 'USER'
    try:
        user = UserService.create_user(body)
    except UserDuplicated as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize()), 200
Example #3
0
 def wrapper(*args, **kwargs):
     json_data = request.get_json()
     if 'password' not in json_data or 'repeatPassword' not in json_data:
         return error(status=400, detail='not updated')
     password = json_data.get('password')
     repeat_password = json_data.get('repeatPassword')
     if password != repeat_password:
         return error(status=400, detail='not updated')
     return func(*args, **kwargs)
Example #4
0
def publish_script(script):
    """Publish a script"""
    logging.info('[ROUTER]: Publishsing script '+script)
    try:
        script = ScriptService.publish_script(script, current_identity)
    except ScriptNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=script.serialize()), 200
Example #5
0
def delete_profile():
    """Delete Me"""
    logging.info('[ROUTER]: Delete me')
    identity = current_identity
    try:
        user = UserService.delete_user(str(identity.id))
    except UserNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize()), 200
Example #6
0
def get_execution(execution):
    """Get an execution"""
    logging.info('[ROUTER]: Getting execution: '+execution)
    include = request.args.get('include')
    include = include.split(',') if include else []
    try:
        execution = ExecutionService.get_execution(execution, current_identity)
    except ExecutionNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=execution.serialize(include)), 200
Example #7
0
def get_users():
    """Get users"""
    logging.info('[ROUTER]: Getting all users')
    include = request.args.get('include')
    include = include.split(',') if include else []
    identity = current_identity
    if identity.role != 'ADMIN' and identity.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        users = UserService.get_users()
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=[user.serialize(include) for user in users]), 200
Example #8
0
def get_script(script):
    """Get a script"""
    logging.info('[ROUTER]: Getting script '+script)
    include = request.args.get('include')
    include = include.split(',') if include else []
    try:
        script = ScriptService.get_script(script, current_identity)
    except ScriptNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=script.serialize(include)), 200
Example #9
0
 def wrapper(*args, **kwargs):
     json_data = request.get_json()
     if 'email' not in json_data:
         return error(status=400, detail='Email is required')
     else:
         if not EMAIL_REGEX.match(json_data.get('email')):
             return error(status=400, detail='Email not valid')
     if 'name' not in json_data:
         return error(status=400, detail='Name is required')
     if 'role' in json_data:
         role = json_data.get('role')
         if role not in ROLES:
             return error(status=400, detail='role not valid')
     return func(*args, **kwargs)
Example #10
0
def recover_password(user):
    """Revover password"""
    logging.info('[ROUTER]: Recovering password')
    try:
        user = UserService.recover_password(user)
    except UserNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except EmailError as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=500, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize()), 200
Example #11
0
def delete_script(script):
    """Delete a script"""
    logging.info('[ROUTER]: Deleting script: '+script)
    identity = current_identity
    if identity.role != 'ADMIN' and identity.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        script = ScriptService.delete_script(script, identity)
    except ScriptNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=script.serialize()), 200
Example #12
0
def download_script(script):
    """Download a script"""
    logging.info('[ROUTER]: Download script '+script)
    try:
        script = ScriptService.get_script(script, current_identity)
        return send_from_directory(directory=SETTINGS.get('SCRIPTS_FS'), filename=script.slug + '.tar.gz')
    except ScriptNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except NotAllowed as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=403, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
Example #13
0
def update_execution(execution):
    """Update an execution"""
    logging.info('[ROUTER]: Updating execution ' + execution)
    body = request.get_json()
    user = current_identity
    if user.role != 'ADMIN' and user.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        execution = ExecutionService.update_execution(body, execution)
    except ExecutionNotFound as e:
        logging.error('[ROUTER]: ' + e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: ' + str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=execution.serialize()), 200
Example #14
0
def get_execution_logs(execution):
    """Get the exectuion logs"""
    logging.info('[ROUTER]: Getting exectuion logs of execution %s ' % (execution))
    try:
        start = request.args.get('start', None)
        if start:
            start = dateutil.parser.parse(start)
        last_id = request.args.get('last-id', None)
        logs = ExecutionService.get_execution_logs(execution, start, last_id)
    except ExecutionNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=[log.serialize() for log in logs]), 200
Example #15
0
def update_user(user):
    """Update an user"""
    logging.info('[ROUTER]: Updating user'+user)
    body = request.get_json()
    identity = current_identity
    if identity.role != 'ADMIN' and identity.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        user = UserService.update_user(body, user)
    except UserNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize()), 200
Example #16
0
 def wrapper(*args, **kwargs):
     json_data = request.get_json()
     if 'role' in json_data:
         role = json_data.get('role')
         if role not in ROLES:
             return error(status=400, detail='role not valid')
     return func(*args, **kwargs)
Example #17
0
def get_script_logs(script):
    """Get a script logs"""
    logging.info('[ROUTER]: Getting script logs of script %s ' % (script))
    try:
        start = request.args.get('start', None)
        if start:
            start = dateutil.parser.parse(start)
        last_id = request.args.get('last-id', None)
        logs = ScriptService.get_script_logs(script, start, last_id)
    except ScriptNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=[log.serialize() for log in logs]), 200
Example #18
0
def create_execution_log(execution):
    """Create log of an execution"""
    logging.info('[ROUTER]: Creating execution log for '+execution)
    body = request.get_json()
    user = current_identity
    if user.role != 'ADMIN' and user.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        log = ExecutionService.create_execution_log(body, execution)
    except ExecutionNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=log.serialize()), 200
Example #19
0
def delete_user(user):
    """Delete an user"""
    logging.info('[ROUTER]: Deleting user' + user)
    identity = current_identity
    if user == '*****@*****.**':
        return error(status=403, detail='Forbidden')
    if identity.role != 'ADMIN' and identity.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        user = UserService.delete_user(user)
    except UserNotFound as e:
        logging.error('[ROUTER]: ' + e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: ' + str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize()), 200
Example #20
0
def get_user(user):
    """Get an user"""
    logging.info('[ROUTER]: Getting user'+user)
    include = request.args.get('include')
    include = include.split(',') if include else []
    identity = current_identity
    if identity.role != 'ADMIN' and identity.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        user = UserService.get_user(user)
    except UserNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize(include)), 200
Example #21
0
def get_scripts():
    """Get all scripts"""
    logging.info('[ROUTER]: Getting all scripts')
    include = request.args.get('include')
    include = include.split(',') if include else []
    try:
        scripts = ScriptService.get_scripts(current_identity)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=[script.serialize(include) for script in scripts]), 200
Example #22
0
def run_script(script):
    """Run a script"""
    logging.info('[ROUTER]: Running script: '+script)
    user = current_identity
    try:
        params = request.args.to_dict() if request.args else {}
        if request.get_json(silent=True):
            params.update(request.get_json())
        if 'token' in params:
            del params['token']
        execution = ExecutionService.create_execution(script, params, user)
    except ScriptNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except ScriptStateNotValid as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=execution.serialize()), 200
Example #23
0
def create_script():
    """
    Create a new script
    """
    logging.info('[ROUTER]: Creating a script')
    sent_file = request.files.get('file')
    if sent_file.filename == '':
        sent_file.filename = 'script'
    user = current_identity
    try:
        user = ScriptService.create_script(sent_file, user)
    except InvalidFile as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except ScriptDuplicated as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=user.serialize()), 200
Example #24
0
def get_download_results(execution):
    """Download results of the exectuion"""
    logging.info('[ROUTER]: Download execution results of execution %s ' % (execution))
    try:
        execution = ExecutionService.get_execution(execution)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')

    return Response(
        json.dumps(execution.results),
        mimetype="text/plain",
        headers={"Content-Disposition": "attachment;filename=results.json"}
    )
Example #25
0
def update_script(script):
    """Update a script"""
    logging.info('[ROUTER]: Updating a script')
    sent_file = request.files.get('file')
    if sent_file.filename == '':
        sent_file.filename = 'script'
    user = current_identity
    if user.role != 'ADMIN' and user.email != '*****@*****.**':
        return error(status=403, detail='Forbidden')
    try:
        script = ScriptService.update_script(script, sent_file, user)
    except InvalidFile as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except ScriptNotFound as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=404, detail=e.message)
    except NotAllowed as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=403, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=script.serialize()), 200
Example #26
0
def get_executions():
    """Get all executions"""
    logging.info('[ROUTER]: Getting all executions: ')
    user_id = request.args.get('user_id', None)
    updated_at = request.args.get('updated_at', None)
    if updated_at:
        updated_at = dateutil.parser.parse(updated_at)
    include = request.args.get('include')
    include = include.split(',') if include else []
    try:
        executions = ExecutionService.get_executions(current_identity, user_id, updated_at)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')
    return jsonify(data=[execution.serialize(include) for execution in executions]), 200
Example #27
0
def gone(e):
    return error(status=410, detail='Gone')
Example #28
0
def method_not_allowed(e):
    return error(status=405, detail='Method Not Allowed')
Example #29
0
def page_not_found(e):
    return error(status=404, detail='Not Found')
Example #30
0
def forbidden(e):
    return error(status=403, detail='Forbidden')