Пример #1
0
 def wrapping_func(*args, **kwargs):
     data = param_helper.get_json(request_obj)
     try:
         setattr(request_obj, 'user', decode_token(data["token"]))
     except KeyError:
         raise custom_exceptions.TokenAbsentError()
     return func(*args, **kwargs)
Пример #2
0
async def login(request, session_obj):
    params = param_helper.get_json(request)
    if 'password' in params:
        params.update(
            {'password': password_helper.encrypt(params['password'])})

    # TODO: replace this loop when you integrate WTForms
    for field in ('username', 'password'):
        if field not in params:
            return json(
                {
                    'message': ('You need to provide your `{0}` to '
                                'successfully log in'.format(field))
                }, 401)
    args = [{
        "username": {
            "$eq": params['username']
        }
    }, {
        "password": {
            "$eq": params['password']
        }
    }, {
        "deleted_at": {
            "$eq": None
        }
    }]
    result = query_helper.find_by_params(session_obj, User, args, True)
    if result:
        result.update({"token": jwt_helper.encode_token(result)})
        return json(result)
    return json({'message': 'invalid login details'}, 401)
Пример #3
0
async def user_index(request, session_obj, user_obj):
    params = param_helper.get_json(request, True)
    filter_args = params.get('filters', [])
    pagination_args = param_helper.get_pagination_details(request)
    result = query_helper.list_query(session_obj, User, filter_args,
                                     pagination_args, True)
    return json(result)
Пример #4
0
async def create_note(request, session_obj, user_obj):
    params = param_helper.get_json(request)
    _id = id_helper.generate_id()
    params.update({
        'created_at': datetime.utcnow(),
        'id': _id,
        'ver': _id,
        'created_by_id': user_obj['id']
    })

    if 'parent_note_id' in params:

        found_parent = query_helper.find_by_params(
            session_obj,
            Note, [{
                'id': {
                    '$eq': params['parent_note_id']
                }
            }],
            json_result=True)

        if not found_parent:
            return json({
                'message': ('no parent note with id equal to {0} was found, '
                            'try again'.format(params['parent_note_id']))
            })

    result = command_helper.save(session_obj,
                                 Note,
                                 Note.COLUMNS,
                                 params,
                                 json_result=True)

    session_obj.commit()
    return json(result)
Пример #5
0
async def count_note_status(request, session_obj, user_obj, note_id):
    params = param_helper.get_json(request)
    filters = params.get('filters', [])
    filters.extend([
    	{'created_by_id': {"$eq": user_obj['id']}},
    	{'note_id': {'$eq': note_id}}
	])
    return json(query_helper.count(session_obj, NoteStatus, filters))
Пример #6
0
async def label_index(request, session_obj, user_obj):
    params = param_helper.get_json(request)
    filters = params.get('filters', [])
    filters.append({'created_by_id': {"$eq": user_obj['id']}})
    pagination_args = param_helper.get_pagination_details(request)
    result = query_helper.list_query(session_obj,
                                     Label,
                                     filters,
                                     pagination_args,
                                     json_result=True)
    return json(result)
Пример #7
0
async def note_status_index(request, session_obj, user_obj, note_id):
    params = param_helper.get_json(request)
    filters = params.get('filters', [])
    filters.extend([
    	{'created_by_id': {"$eq": user_obj['id']}},
    	{'note_id': {'$eq': note_id}}
	])
    pagination_args = param_helper.get_pagination_details(request)
    result = query_helper.list_query(
        session_obj, NoteStatus, filters, pagination_args, json_result=True)
    return json(result)
Пример #8
0
async def create_note_status(request, session_obj, user_obj, note_id):
    params = param_helper.get_json(request)
    _id = id_helper.generate_id()
    params.update({
        'created_at': datetime.utcnow(), 'id': _id,
        'ver': _id, 'created_by_id': user_obj['id'],
        'note_id': note_id
    })
    result = command_helper.save(
        session_obj, NoteStatus, NoteStatus.COLUMNS, params, json_result=True)

    session_obj.commit()
    return json(result)
Пример #9
0
async def delete_user(request, session_obj, user_obj):
    params = param_helper.get_json(request, remove_token=True)
    filter_args = params.get('filters', [])  # TODO: check if version is passed
    data = {'deleted_at': datetime.utcnow(), 'ver': id_helper.generate_id()}
    filter_args.append({'id': {'$eq': user_obj['id']}})
    print(filter_args)
    result = command_helper.delete_by_params(session_obj,
                                             User,
                                             filter_args,
                                             data,
                                             json_result=True)
    session_obj.commit()
    return json(result)
Пример #10
0
async def update_note_status(request, session_obj, user_obj, status_id):
    params = param_helper.get_json(request)
    filters = params.get('filters', [])
    filters.extend([
        {'id': {'$eq': status_id}},
        {'created_by_id': {'$eq': user_obj['id']}}
    ])
    data = {'ver': id_helper.generate_id(), 'updated_at': datetime.utcnow()}
    for field in params.keys():
        if field not in ('id', 'ver', 'created_by_id'):
            data[field] = params[field]
    result = command_helper.update_by_params(
        session_obj, NoteStatus, filters, data, json_result=True)
    session_obj.commit()
    return json(result)
Пример #11
0
async def update_user(request, session_obj, user_obj):
    params = param_helper.get_json(request, remove_token=True)
    filter_args = params.get('filters', [])  # TODO: check if version is passed
    filter_args.append({'id': {'$eq': user_obj['id']}})
    data = {'updated_at': datetime.utcnow(), 'ver': id_helper.generate_id()}
    for field in params.keys():
        if field not in ('password', 'id', 'created_at', 'updated_at', 'ver',
                         'filters', 'limit', 'offset', 'sort'):
            data.update({field: params[field]})
    result = command_helper.update_by_params(session_obj,
                                             User,
                                             filter_args,
                                             data,
                                             json_result=True)
    session_obj.commit()
    return json(result)
Пример #12
0
async def save_user(request, session_obj):
    data = param_helper.get_json(request)
    _id = id_helper.generate_id()
    data.update({
        'ver': _id,
        'id': _id,
        'password': password_helper.encrypt(data['password']),
        'created_at': datetime.utcnow()
    })
    result = command_helper.save(session_obj,
                                 User,
                                 User.COLUMNS,
                                 data,
                                 json_result=True)
    session_obj.commit()
    return json(result)
Пример #13
0
async def create_label(request, session_obj, user_obj):
    params = param_helper.get_json(request)
    _id = id_helper.generate_id()
    params.update({
        'created_at': datetime.utcnow(),
        'id': _id,
        'ver': _id,
        'created_by_id': user_obj['id']
    })
    result = command_helper.save(session_obj,
                                 Label,
                                 Label.COLUMNS,
                                 params,
                                 json_result=True)

    session_obj.commit()
    return json(result)
Пример #14
0
        async def decorated_function(request, *args, **kwargs):
            params = param_helper.get_json(request, remove_token=False)

            if not params or 'token' not in params:
                return json({'message': 'you need to pass in access token'},
                            401)

            try:
                user_obj = jwt_helper.decode_token(params, 'token')

                kwargs['user_obj'] = user_obj
                return await f(request, *args, **kwargs)
            except ExpiredSignatureError:
                return json(
                    {'message': 'Your login has expired, please login again'},
                    401)
            except DecodeError:
                return json(
                    {
                        'message':
                        ('Your token is invalid, provide a valid token '
                         'to proceed')
                    }, 401)
Пример #15
0
async def delete_label(request, session_obj, user_obj, label_id):
    params = param_helper.get_json(request)
    filters = params.get('filters', [])  # TODO: make sure that ver is passed
    filters.extend([{
        'id': {
            '$eq': label_id
        }
    }, {
        'created_by_id': {
            '$eq': user_obj['id']
        }
    }])

    data = {'ver': id_helper.generate_id(), 'deleted_at': datetime.utcnow()}
    for field in params.keys():
        if field not in ('id', 'ver', 'name', 'created_by_id'):
            data[field] = params[field]
    result = command_helper.delete_by_params(session_obj,
                                             Label,
                                             filters,
                                             data,
                                             json_result=True)
    session_obj.commit()
    return json(result)
Пример #16
0
def decode():
    params = param_helper.get_json(request)
    result = jwt_helper.decode_token(params["token"])
    return json_dumps(result)
Пример #17
0
async def count_label(request, session_obj, user_obj):
    params = param_helper.get_json(request)
    filters = params.get('filters', [])
    filters.append({'created_by_id': {"$eq": user_obj['id']}})
    return json(query_helper.count(session_obj, Label, filters))
Пример #18
0
async def count(request, session_obj, user_obj):
    params = param_helper.get_json(request, remove_token=True)
    result = query_helper.count(session_obj, User, params)
    return json(result)