예제 #1
0
파일: db.py 프로젝트: Techzune/SWA_Assn3
def get_user_purchases(user, db=None):
    """
    Gets all purchases by user.

    :param user: User, the user to find purchases for
    :param db: optional, the database connection
    """
    db = db or get_db()
    cur = db.cursor()

    # insert the purchase
    cur.execute("""
        SELECT PurchaseID, TotalPrice, CreditCard, Address
        FROM Purchase
        WHERE Username=? 
    """, [user.username])

    purchases = []
    for row1 in cur.fetchall():
        purchase = Purchase(username=user.username, id_=row1[0], total_price=row1[1],
                            credit_card=row1[2], address=Address().from_str(row1[3]))
        cur.execute("""
            SELECT InventoryItemID, Price, Quantity
            FROM PurchaseItem
            WHERE PurchaseID=?
        """, [purchase.id_])
        for row2 in cur.fetchall():
            item = get_inventory_item(InventoryItem(row2[0]), db)
            purchase.items.append(ShoppingCartItem(item=item, price=row2[1], qty=row2[2]))
        purchases.append(purchase)

    cur.close()
    return purchases
예제 #2
0
파일: db.py 프로젝트: Techzune/SWA_Assn3
def get_shopping_cart(user, db=None):
    """
    Gets all ShoppingCartItems for user

    :param user: User, the user to request for
    :param db: optional, the database connection
    """
    db = db or get_db()
    cur = db.cursor()
    cur.execute("""
        SELECT InventoryItemID, Price, Quantity
        FROM ShoppingCartItem
        WHERE UserID = ?
    """, [user.id_])

    cart = ShoppingCart(user)
    for row in cur.fetchall():
        try:
            item = get_inventory_item(InventoryItem(id_=row[0]), db)
            cart.items.append(ShoppingCartItem(item=item, price=row[1], qty=row[2]))
        except Exception as e:
            print("invalid purchase item:", e)

    cur.close()
    return cart
예제 #3
0
파일: index.py 프로젝트: Techzune/SWA_Assn3
def cart_remove():
    if request.args.get('id') is None:
        return redirect('/cart')

    id_ = request.args.get('id')
    qty = request.args.get('qty')

    db.remove_from_cart(user=User(current_user.get_id()),
                        item=ShoppingCartItem(item=InventoryItem(id_=id_)),
                        qty=qty)
    return redirect('/cart')
예제 #4
0
파일: index.py 프로젝트: Techzune/SWA_Assn3
def cart_update():
    for id_, qty in request.args.items():
        # this makes sure we only use ints
        # noinspection PyBroadException
        try:
            qty = int(qty)
            inv_item = db.get_inventory_item(InventoryItem(id_))
            if inv_item.quantity >= qty:
                db.update_cart(user=User(current_user.get_id()),
                               item=ShoppingCartItem(item=inv_item),
                               qty=qty)
            else:
                flask.flash(
                    "<b>Exceeds stock:</b> {} has no more than {} items available."
                    .format(inv_item.name, inv_item.quantity), "warning")
        except Exception:
            continue
    return redirect('/cart')
예제 #5
0
파일: db.py 프로젝트: Techzune/SWA_Assn3
def get_purchase(purchase, db=None):
    """
    Gets a purchase from the database based on PurchaseID

    :param purchase: Purchase, must have id
    :param db: optional, the database connection
    """
    db = db or get_db()
    cur = db.cursor()
    cur.execute("""
        SELECT Username, TotalPrice, CreditCard, Address
        FROM Purchase
        WHERE PurchaseID = ?
    """, [purchase.id_])

    row = cur.fetchone()
    try:
        purchase = Purchase(id_=purchase.id_, username=row[0], total_price=row[1],
                            credit_card=row[2], address=Address().from_str(row[3]))
    except Exception as e:
        print("invalid purchase:", e)

    cur.execute("""
        SELECT InventoryItemID, Price, Quantity
        FROM PurchaseItem
        WHERE pi.PurchaseID = ?
    """, [purchase.id_])

    for row in cur.fetchall():
        try:
            item = get_inventory_item(InventoryItem(id_=row[0]), db)
            purchase.items.append(ShoppingCartItem(item=item, price=row[1], qty=row[2]))
        except Exception as e:
            print("invalid purchase item:", e)

    cur.close()
    return purchase