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)
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)
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)
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)
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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
def decode(): params = param_helper.get_json(request) result = jwt_helper.decode_token(params["token"]) return json_dumps(result)
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))
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)