def login(): try: req_data = request.get_json() data = user_schema.load(req_data, partial=True) if not data.get('email') or not data.get('password'): return get_response( 400, { ErrorResponseMessages.CREDENTIALS_ERROR: 'Email and password are required' }) user = User.get_user_by_email(data.get('email')) if not user: return get_response( 401, { ErrorResponseMessages.CREDENTIALS_ERROR: 'Wrong email or password' }) if not user.check_hash(data.get('password')): return get_response( 401, { ErrorResponseMessages.CREDENTIALS_ERROR: 'Wrong email or password' }) ser_data_id = user_schema.dump(user).get('id') token = generate_token(ser_data_id) return get_response(200, {'token': token}) except ValidationError as err: return get_response( 400, {ErrorResponseMessages.VALIDATION_ERROR: err.messages})
def update(): try: req_data = request.get_json() data = user_schema.load(req_data, partial=True) user = User.get_one_user(g.user.get('id')) user.update(data) return get_response(200, user_schema.dump(user)) except ValidationError as err: return get_response( 400, {ErrorResponseMessages.VALIDATION_ERROR: err.messages})
def create(): try: req_data = request.get_json() data = meal_schema.load(req_data) meal = Meal(data, g.user.get('id')) meal.save() return get_response(201, meal_schema.dump(meal)) except ValidationError as err: return get_response( 400, {ErrorResponseMessages.VALIDATION_ERROR: err.messages})
def update(meal_id): try: req_data = request.get_json() data = meal_schema.load(req_data, partial=True) meal = Meal.get_meal(meal_id) meal.update(data) return get_response(200, meal_schema.dump(meal)) except ValidationError as err: return get_response( 400, {ErrorResponseMessages.VALIDATION_ERROR: err.messages})
def delete(meal_id): calendar_meals = CalendarMeal.get_calendar_by_meal(meal_id) for calendar_meal in calendar_meals: calendar_meal.delete() meal = Meal.get_meal(meal_id) meal.delete() return get_response(204)
def decorated_auth(*args, **kwargs): if 'token' not in request.headers: return get_response( 400, {ErrorResponseMessages.TOKEN_ERROR: 'Invalid token'}) token = request.headers.get('token') try: data = jwt.decode(token, os.getenv('JWT_SECRET_KEY')) except jwt.InvalidTokenError: return get_response( 400, {ErrorResponseMessages.TOKEN_ERROR: 'Invalid token'}) user_id = data['sub'] check_user = User.get_one_user(user_id) if not check_user: return get_response( 400, {ErrorResponseMessages.TOKEN_ERROR: 'Invalid token'}) g.user = {'id': user_id} return func(*args, **kwargs)
def create(): try: req_data = request.get_json() data = user_schema.load(req_data) user_in_db = User.get_user_by_email(data.get('email')) if user_in_db: message = { ErrorResponseMessages.USER_EXISTS_ERROR: 'Email already exists' } return get_response(409, message) user = User(data) user.save() ser_data_id = user_schema.dump(user).get('id') token = generate_token(ser_data_id) return get_response(201, {'token': token}) except ValidationError as err: return get_response( 400, {ErrorResponseMessages.VALIDATION_ERROR: err.messages})
def fetch(): ingredients = UserIngredient.fetch_all_user_ingredients( g.user.get('id')) ser_ingredients = [ingredients_schema.dump(i) for i in ingredients] return get_response(200, ser_ingredients)
def get_me(): user = User.get_one_user(g.user.get('id')) ser_user = user_schema.dump(user) return get_response(200, ser_user)
def delete(): user = User.get_one_user(g.user.get('id')) user.delete() return get_response(204)
def get_all(): user_id = g.user.get('id') meals = Meal.get_all_meals_by_user(user_id) ser_meals = [meal_schema.dump(m) for m in meals] return get_response(200, ser_meals)
def fetch(meal_id): meal = Meal.get_meal(meal_id) if meal.user_id != g.user.get('id'): return make_response(None, 403) return get_response(200, meal_schema.dump(meal))
def delete(calendar_meal_id): meal = CalendarMeal.get_calendar_meal(calendar_meal_id) meal.delete() return get_response(204)
def get_all(): user_id = g.user.get('id') calendar_meals = CalendarMeal.get_calendar_meals_by_user(user_id) ser_meals = [calendar_meal_schema.dump(m) for m in calendar_meals] return get_response(201, ser_meals)