def create_item(category): '''handles creation of a new Item''' if request.method == 'GET' and 'username' in login_session: # user is logged in, so render the createItem page categories = session.query(Category).all() return render_template('createItem.html', categories=categories, selected_category=category) elif request.method == 'GET': # user is NOT logged in, so render the loginpage flash('You need to login first to create a new item.') return render_template('login.html') elif request.method == 'POST': new_item = Item() if request.form['name']: new_item.name = request.form['name'] if request.form['description']: new_item.description = request.form['description'] category_selected = (session.query(Category).filter_by( name=request.form['category']).one()) new_item.category_id = category_selected.id new_item.creator_id = login_session['user_id'] new_item.edited_time = int(time.time()) session.add(new_item) session.commit() flash('{} created'.format(new_item.name)) return redirect( url_for('category_display', category=category_selected.name))
def new_item_save(): """ salva item no banco """ form = request.form item = Item() item.category_id = int(form['category']) item.title = form['title'] item.description = form['description'] item.created_at = datetime.datetime.now() item.user_id = current_user.id db.session.add(item) db.session.commit() return redirect(url_for('index'))
def APIAddItem(): # Reject with a 422 if token parameter not provided if "token" not in request.args: return jsonRespObj( 422, "An access token is required to perform this request.") # Check whether API user has supplied a valid access token if not checkToken(request.args["token"]): return unauthenticatedError() # Item name, category ID, and price must be provided # to add an item (stock will default to 0) if "name" not in request.args: return jsonRespObj(422, "Item name must be provided for item to be added.") elif "category_id" not in request.args: return jsonRespObj( 422, "Category ID must be provided for item to be added.") elif "price" not in request.args: return jsonRespObj(422, "Price must be provided for item to be added.") # Create a new item object new_item = Item() # Default stock level to 0 parameter/value not provided if "stock" not in request.args: new_item.stock = 0 else: new_item.stock = request.args["stock"] if "description" in request.args: new_item.description = request.args["description"] # Attempt to add the new item to DB try: new_item.name = request.args["name"] # Make sure that the price is registered in currency if request.args["price"][0] != "$": new_item.price = "$" + request.args["price"] else: new_item.price = request.args["price"] new_item.category_id = request.args["category_id"] db_session.add(new_item) db_session.commit() except: # If item could not be created, return a 500 return jsonRespObj(500, "Server-side error occurred during item creation.") # Return a 200 to user on successful creation of item return jsonRespObj( 200, "Successfully added item '{}' to database.".format( request.args["name"]))
def addItems(category_id): if requireLogin(): return redirect(url_for("login")) category = db_session.query(Category).filter_by(id=category_id).one() subheading = "Add items for category '{category}' (id: {id})" \ .format(category=category.name, id=category_id) last_item = db_session.query(Item).order_by(Item.id.desc()).first() image_dir = app.config["IMG_DIR"] + "/categories/" + str(category_id) \ + "/items/" + str(last_item.id + 1) + "/" if request.method == "POST": new_item = Item() new_item.category_id = category_id new_item.name = request.form["name"] new_item.price = "$" + request.form["price"] new_item.stock = request.form["stock"] new_item.description = request.form["description"] if not request.form["description"]: new_item.description = "" # TODO: Add item image functionality # if request.files["image"]: # # create the image folder for the item # if not os.path.exists(image_dir): # os.makedirs(image_dir) # uploaded_image = request.files["image"] # safe_image = secure_filename(uploaded_image.filename) # uploaded_image.save(os.path.join(image_dir, safe_image)) # new_item.image = os.path.join(image_dir, safe_image) db_session.add(new_item) db_session.commit() flash("Successfully added item '{}'.".format(new_item.name)) return redirect(url_for("displayCategory", category_id=category_id)) elif request.method == "GET": return render_template("add_items.html", title=TITLE, subheading=subheading, category=category) else: return abort(400)
def categoryItems(category_name): """ Displays Items for a selected category Adding new Items requires user login """ if request.method == 'GET': categories = session.query(Category).all() selected_category_id = session.query(Category).filter_by( name=category_name).first().id category_items = session.query(Item).filter_by( category_id=selected_category_id).order_by(Item.name).all() return render_template('category-items.html', categories=categories, category_name=category_name, category_items=category_items, user=login_session['username'], userID=login_session['user_id']) if request.method == 'POST': category_id_for_item = session.query(Category).filter_by( name=category_name).first().id newItem = Item(name=request.form['newItemName'], description=request.form['newItemDescription']) newItem.category_id = category_id_for_item try: user = session.query(User).filter_by( email=login_session['email']).first() userId = user.id except AttributeError, e: print(e) return redirect(url_for('pickProvider')) print("userID is : %s") % userId newItem.created_by = userId # DONE : make it the actual signed in user newItem.last_edit = datetime.now() session.add(newItem) session.commit() return redirect(url_for('categoryItems', category_name=category_name))
def items(id=None): if request.method == 'GET': if id is not None: item = Item.query.get(id) if item: return jsonify(item.serialize()), 200 else: return jsonify({'item': 'not found'}), 404 else: items = Item.query.all() items = list(map(lambda item: item.serialize(), items)) return jsonify(items), 200 if request.method == 'POST': if not request.json.get('nombre'): return jsonify({"nombre": "is required"}), 422 if not request.json.get('precio'): return jsonify({"precio": "is required"}), 422 if not request.json.get('descripcion'): return jsonify({"descripcion": "is required"}), 422 if not request.json.get('category_id'): return jsonify({"category_id": "is required"}), 422 item = Item() item.nombre = request.json.get('nombre') item.precio = request.json.get('precio') item.descripcion = request.json.get('descripcion') item.category_id = request.json.get('category_id') db.session.add(item) db.session.commit() return jsonify(item.serialize()), 201 if request.method == 'PUT': if not request.json.get('nombre'): return jsonify({"nombre": "is required"}), 422 if not request.json.get('precio'): return jsonify({"precio": "is required"}), 422 if not request.json.get('descripcion'): return jsonify({"descripcion": "is required"}), 422 if not request.json.get('category_id'): return jsonify({"category_id": "is required"}), 422 item = Item.query.get(id) item.nombre = request.json.get('nombre') item.precio = request.json.get('precio') item.descripcion = request.json.get('descripcion') item.category_id = request.json.get('category_id') db.session.commit() return jsonify(item.serialize()), 200 if request.method == 'DELETE': item = Item.query.get(id) db.session.delete(item) db.session.commit() return jsonify({'item': 'deleted'}), 200
DBSession = sessionmaker(bind=engine) # A DBSession() instance establishes all conversations with the database # and represents a "staging zone" for all the objects loaded into the # database session object. Any change made against the objects in the # session won't be persisted into the database until you call # session.commit(). If you're not happy about the changes, you can # revert all of them back to the last commit by calling # session.rollback() session = DBSession() test_user = User() test_user.username = "******" test_user.email = "*****@*****.**" session.add(test_user) session.commit() new_category = Category() new_category.name = "Soccer" session.add(new_category) session.commit() new_item = Item() new_item.name = "Abibas Predadors" new_item.description = "I was created by admin and can't be deleted." new_item.price = 120.59 new_item.category_id = new_category.id new_item.created_by = test_user.id session.add(new_item) session.commit()