def edit_item(item_name): '''Allows a logged-in user to edit an item they created''' # Ensure there is a user logged in: if not gplus.is_logged_in(): return redirect('/') # Ensure the item being edited exists: query = db.session.query(Item).filter_by(name=item_name) if not db.session.query(query.exists()): return redirect('/') # Ensure the logged-in user owns this item: item = query.one() if item.user_id != login_session['user_id']: return redirect('/') if request.method == 'POST': new_item_name = request.form['item_name'] new_item_description = request.form['item_description'] new_category_name = request.form['category_name'] # Ensure the new category exists: query = db.session.query(Category).filter_by(name=new_category_name) if not db.session.query(query.exists()): return redirect('/') new_category = query.one() # Validate the new item name and description if not db.is_valid_item(new_item_name, new_item_description): return redirect('/catalog/%s/%s' % (new_category.name, item_name)) item.name = new_item_name item.description = new_item_description item.category_id = new_category.id db.session.commit() return redirect('/catalog/%s/%s' % (new_category.name, new_item_name)) elif request.method == 'GET': item_description = db.session.query(Item).filter_by( name=item_name).one().description #NOQA categories = db.get_categories() categories = [category.name for category in categories] (state, logged_in, username) = gplus.get_login_state() data = { 'item_name': item_name, 'item_description': item_description, 'categories': categories, 'state': state, 'logged_in': logged_in, 'username': username } return render_template('edit.html', data=data)
def edit_item(item_name): '''Allows a logged-in user to edit an item they created''' # Ensure there is a user logged in: if not gplus.is_logged_in(): return redirect('/') # Ensure the item being edited exists: query = db.session.query(Item).filter_by(name = item_name) if not db.session.query(query.exists()): return redirect('/') # Ensure the logged-in user owns this item: item = query.one() if item.user_id != login_session['user_id']: return redirect('/') if request.method == 'POST': new_item_name = request.form['item_name'] new_item_description = request.form['item_description'] new_category_name = request.form['category_name'] # Ensure the new category exists: query = db.session.query(Category).filter_by(name = new_category_name) if not db.session.query(query.exists()): return redirect('/') new_category = query.one() # Validate the new item name and description if not db.is_valid_item(new_item_name, new_item_description): return redirect('/catalog/%s/%s' % (new_category.name, item_name)) item.name = new_item_name item.description = new_item_description item.category_id = new_category.id db.session.commit() return redirect('/catalog/%s/%s' % (new_category.name, new_item_name)) elif request.method == 'GET': item_description = db.session.query(Item).filter_by(name = item_name).one().description #NOQA categories = db.get_categories() categories = [category.name for category in categories] (state, logged_in, username) = gplus.get_login_state() data = { 'item_name': item_name, 'item_description': item_description, 'categories': categories, 'state': state, 'logged_in': logged_in, 'username': username } return render_template('edit.html', data = data)
def add_item(): '''Adds an item to the database''' # Ensure there is a user logged in: if not gplus.is_logged_in(): return redirect('/') if request.method == 'POST': category_name = request.form['category_name'] # Ensure the category exists: query = db.session.query(Category).filter_by(name = category_name) #NOQA if not db.session.query(query.exists()): return redirect('/') category = query.one() item_name = request.form['item_name'] item_description = request.form['item_description'] # Validate the item name and descriptions if not db.is_valid_item(item_name, item_description): return redirect('/') user_id = db.get_user_id_by_name(login_session['username']) db.create_item(item_name, item_description, category.id, user_id) return redirect("/catalog/%s/items" % category_name) elif request.method == 'GET': categories = db.get_categories() (state, logged_in, username) = gplus.get_login_state() data = { 'categories': [category.name for category in categories], 'state': state, 'logged_in': logged_in, 'username': username } return render_template('add.html', data = data)
def add_item(): '''Adds an item to the database''' # Ensure there is a user logged in: if not gplus.is_logged_in(): return redirect('/') if request.method == 'POST': category_name = request.form['category_name'] # Ensure the category exists: query = db.session.query(Category).filter_by(name=category_name) #NOQA if not db.session.query(query.exists()): return redirect('/') category = query.one() item_name = request.form['item_name'] item_description = request.form['item_description'] # Validate the item name and descriptions if not db.is_valid_item(item_name, item_description): return redirect('/') user_id = db.get_user_id_by_name(login_session['username']) db.create_item(item_name, item_description, category.id, user_id) return redirect("/catalog/%s/items" % category_name) elif request.method == 'GET': categories = db.get_categories() (state, logged_in, username) = gplus.get_login_state() data = { 'categories': [category.name for category in categories], 'state': state, 'logged_in': logged_in, 'username': username } return render_template('add.html', data=data)