Beispiel #1
0
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))
Beispiel #2
0
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'))
Beispiel #3
0
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"]))
Beispiel #4
0
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)
Beispiel #5
0
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))
Beispiel #6
0
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
Beispiel #7
0
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()