def add_shopping_list_item(id): form = ShoppingListItemForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): shopping_list = ShoppingList.query.get(id) item_id = form.data['item_id'] measurement_id = form.data['measurement_id'] shopping_list_item = ShoppingListItem.query.filter( ShoppingListItem.item_id == item_id).filter( ShoppingListItem.measurement_id == measurement_id).first() if shopping_list_item: shopping_list_item.quantity = ( shopping_list_item.quantity + form.data['quantity']) else: shopping_list_item = ShoppingListItem( user_id=shopping_list.user_id, item_id=form.data['item_id'], shopping_list_id=id, measurement_id=form.data['measurement_id'], quantity=form.data['quantity'] ) db.session.add(shopping_list_item) db.session.commit() return {shopping_list.id: shopping_list.to_dict()} return {'errors': validation_errors_to_error_messages(form.errors)}
def create_shopping_list(): form = ShoppingListForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): shopping_list = ShoppingList( name=form.data['name'], user_id=form.data['user_id'] ) db.session.add(shopping_list) db.session.commit() return {shopping_list.id: shopping_list.to_dict()} return {'errors': validation_errors_to_error_messages(form.errors)}
def login(): """ Logs a user in """ form = LoginForm() # Get the csrf_token from the request cookie and put it into the # form manually to validate_on_submit can be used form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): # Add the user to the session, we are logged in! user = User.query.filter(User.email == form.data['email']).first() login_user(user) return user.to_dict() return {'errors': validation_errors_to_error_messages(form.errors)}, 401
def new_comment(): form = NewCommentForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): user_id = form.data['user_id'] post_id = form.data['post_id'] content = form.data['content'] new_comment = Comment(user_id=user_id, post_id=post_id, content=content) db.session.add(new_comment) db.session.commit() return new_comment.to_dict() if form.errors: return {"errors": validation_errors_to_error_messages(form.errors)}
def sign_up(): """ Creates a new user and logs them in """ form = SignUpForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): user = User(username=form.data['username'], email=form.data['email'], password=form.data['password']) db.session.add(user) db.session.commit() login_user(user) return user.to_dict() return {'errors': validation_errors_to_error_messages(form.errors)}, 400
def edit_delete_item(user_id, item_id): user = User.query.get(user_id) item = UserItem.query.get(item_id) form = InventoryItemForm() if request.method == 'PUT': form['csrf_token'].data = request.cookies['csrf_token'] form['item_id'].data = item.item.id if form.validate_on_submit(): item.expiration_date = form.data['expiration_date'] item.quantity = form.data['quantity'] item.measurement_id = form.data['measurement_id'] db.session.add(item) if request.method == 'DELETE': db.session.delete(item) if form.errors: return {"errors": validation_errors_to_error_messages(form.errors)} else: db.session.commit() return {"inventory": user.inventory()}
def add_item(user_id): user = User.query.get(user_id) form = InventoryItemForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): item_id = form.data['item_id'] measurement_id = form.data['measurement_id'] item = UserItem( item_id=form.data['item_id'], user_id=user_id, expiration_date=form.data['expiration_date'], quantity=form.data['quantity'], measurement_id=form.data['measurement_id'] ) db.session.add(item) if form.errors: return {"errors": validation_errors_to_error_messages(form.errors)} else: db.session.commit() return {"inventory": user.inventory()}
def sign_up(): """ Creates a new user and logs them in """ form = SignUpForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): user = User( name=form.data['name'], username=form.data['username'], email=form.data['email'], password=form.data['password'], profilePicture= 'https://group-gram.s3.amazonaws.com/blank-profile-picture-973460_640.png' ) db.session.add(user) db.session.commit() login_user(user) return user.to_dict() return {'errors': validation_errors_to_error_messages(form.errors)}
def shopping_list(id): shopping_list = ShoppingList.query.get(id) if request.method == 'GET': return {shopping_list.id: shopping_list.to_dict()} elif request.method == 'PUT': form = ShoppingListForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): shopping_list.name = form.data['name'] db.session.add(shopping_list) db.session.commit() return shopping_list.to_dict() elif request.method == 'DELETE': form = DeleteShoppingListForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): db.session.delete(shopping_list) db.session.commit() return 'Shopping List Deleted' return {'errors': validation_errors_to_error_messages(form.errors)}
def edit_shopping_list_items(id, item_id): item = ShoppingListItem.query.get(item_id) shopping_list = ShoppingList.query.get(id) form = ShoppingListItemForm() if request.method == 'PUT': form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): item.measurement_id = form.data['measurement_id'] item.quantity = form.data['quantity'] db.session.add(item) # PATCH Requests are solely for updating the in cart status if request.method == 'PATCH': item.in_cart = not item.in_cart db.session.add(item) if request.method == 'DELETE': db.session.delete(item) if (form.errors): return {'errors': validation_errors_to_error_messages(form.errors)} else: db.session.commit() return {shopping_list.id: shopping_list.to_dict()}