예제 #1
0
def cart():
    form = OrderForm()

    my_cart = session.get('cart', [])
    title = f"Блюд в корзине: {len(my_cart)}" if my_cart else "Ваша корзина пуста"
    products = [Meal.query.get(product_id) for product_id in my_cart]
    total_amount = sum(product.price for product in products)
    total_amount_msg = f"Всего товаров на {total_amount} рублей"
    if request.method == 'GET' and current_user.is_authenticated:
        form.username.data = current_user.username
        form.email.data = current_user.email
        if current_user.address:
            form.address.data = current_user.address

    if form.validate_on_submit():
        new_order = Order()
        new_order.amount = total_amount
        new_order.state = OrderState.query.filter(
            OrderState.title == 'новый').first()
        new_order.user = current_user
        db.session.add(new_order)
        for item in my_cart:
            meal = Meal.query.get(item)
            new_order.meals.append(meal)
        db.session.commit()
        session['cart'] = []
        return redirect('/ordered/')
    return render_template('cart.html',
                           form=form,
                           products=products,
                           title=title,
                           total_amount=total_amount_msg)
예제 #2
0
def get_order():
    choises = [(type.name, type.name) for type in Type.query.all()]
    form = OrderForm(choises)
    if form.validate_on_submit():
        type = Type.query.filter(Type.name == form.product_type.data).one()
        model = form.model.data
        product = Product.query.filter(Product.model == model,
                                       Product.type_id == type.id).first()
        if product is None:
            flash(
                'Sorry, we don\'t have such product. Please check input fields'
            )
            return render_template('order.html', title='Order Page', form=form)
        count = int(form.product_count.data)
        if product.count < count:
            flash(
                'Currently we don\'t have so much products. Please choose smaller number'
            )
            return render_template('order.html', title='Order Page', form=form)
        order = Order(customer=current_user,
                      product=product,
                      price=product.price * count)
        db.session.add(order)
        db.session.commit()
        flash('You successfully bought {}'.format(order))
        return redirect(url_for('get_order'))
    # elif request.method == 'GET':
    #     choises = [(type.name, type.name) for type in Type.query.all()]
    #     form.product_type.choices = choises
    return render_template('order.html', title='Order Page', form=form)
예제 #3
0
def order():
    form = OrderForm()
    outputInfo = ''
    if current_user.is_authenticated:
        if int(current_user.get_id()) is 1:
            return redirect(url_for('index'))
        con = db.engine.connect()
        if form.validate_on_submit():
            userid = int(current_user.get_id())
            stockNumber = form.stocknumber.data
            part = con.execute('SELECT * FROM Part WHERE stocknumber = {0}'.format(stockNumber)).fetchone()
            if not part:
                outputInfo = 'No part matches the stock number you typed in.'
                return render_template('Order.html',Info=outputInfo,title='Order Info',form=form)
            else:
                originQty = part[4]
                if (originQty > 1):
                    con.execute('UPDATE Part SET quantity = {0} WHERE stocknumber = {1}'.format((originQty-1),stockNumber))
                else:
                    con.execute('DELETE FROM Part WHERE stocknumber = {0}'.format(stockNumber))
                sql_section = 'INSERT INTO [Order] (customer_id, part_id) VALUES ({0}, {1})'.format(userid,stockNumber)
                con.execute(sql_section)
                db.session.commit()
                outputInfo = 'Successfully Ordered!'
                return render_template('Order.html',Info=outputInfo,title='Order Info',form=form)
    return render_template('Order.html',Info=outputInfo,title='Order Info',form=form)
예제 #4
0
def add_order():
    form = OrderForm()
    choice = []
    # users = User.query.all()
    # for u in users:
    #     label = u.name
    #     value = u.username
    #     choice.append((value,label))
    # form.buyer.choices = choice
    form.update_choices()
    if form.validate_on_submit():
        order_status = dict(form.order_status.choices).get(
            form.order_status.data)
        buyer = User.query.filter_by(username=form.buyer.data).first()
        order = Orders(amount=form.amount.data,
                       order_status=order_status,
                       buyer=buyer)
        db.session.add(order)
        db.session.commit()
        message = "*{}'s* Taobao order of SGD *{}* has been added.".format(
            order.buyer.name, order.amount)
        #message = '*' + buyer_name + '*' + ' has added a Taobao order of SGD ' + '*' + str(amount) + '*' + ' successfully. \n*Order Status:* ' + status
        api_result = sendtelegram(message)
        flash("Order added.", "success")
        if api_result is True:
            flash("Sent telegram message successfully", 'success')
        else:
            flash("Error sending telegram message", 'danger')
        return redirect(url_for('add_order'))
    return render_template('add_order.html', form=form)
예제 #5
0
def order(current_order):
    form = OrderForm()
    current_order = Order.query.filter_by(id=current_order).first()
    if form.validate_on_submit():
        current_order.adress = form.adress.data
        current_order.phone_number = form.phone.data
        db.session.commit()
        return redirect(url_for('order_submit'))
    return render_template('order.html', form=form)
예제 #6
0
def add_order():
    form = OrderForm()
    clients = controllers.find_all_clients()
    form.client.choices = [(client.id, client.name) for client in clients]
    if form.validate_on_submit():
        order = controllers.add_order(form)
        return redirect(url_for('order', id=order.id))
    else:
        return render_template('new_order.html', form=form)
예제 #7
0
def edit_order(id):
    form = OrderForm()
    clients = controllers.find_all_clients()
    form.client.choices = [(client.id, client.name) for client in clients]
    if form.validate_on_submit():
        order = controllers.edit_order(id, form)
        return redirect(url_for('order', id=order.id))
    elif request.method == 'GET':
        order = controllers.find_order(id)
        controllers.fill_order_form(order, form)
    return render_template('edit_order.html', order=order, form=form)
예제 #8
0
def cart():
    form = OrderForm()
    if form.validate_on_submit():
        order_service.create_order(form)
        return redirect('/ordered')
    else:
        if request.method == 'GET' and session.get('user'):
            form.name.default = session['user']['name']
            form.email.default = session['user']['email']
            form.address.default = session['user']['address']
            form.process()
        return render_template('cart.html', form=form, cart=cart_service.get_cart())
예제 #9
0
def table(id):
    form = OrderForm()
    if form.validate_on_submit():
        french_fries = form.french_fries.data
        dr_pepper = form.dr_pepper.data
        jambalaya = form.jambalaya.data
        order = Order.query.filter(Order.table_id == id).all()
        if order:
            pass
        else:
            order = Order()
    return render_template("orders.html")
예제 #10
0
def change(id):
    order = Order.query.get(id)
    form = OrderForm(obj=order)
    if form.validate_on_submit():
        order.address = form.address.data
        order.phone = form.phone.data
        order.text = form.text.data
        db.session.add(order)
        db.session.commit()
        flash('Заказ успешно изменен.')
        bot.notify_change(order.client, order.volunteer, order)
        return redirect(url_for('.given'))
    return render_template('orders_change.html', form=form)
예제 #11
0
def create():
    """Создание заказа"""
    form = OrderForm(obj=current_user)
    if form.validate_on_submit():
        order = Order(address=form.address.data,
                      phone=form.phone.data,
                      client_id=current_user.id,
                      text=form.text.data)
        db.session.add(order)
        db.session.commit()
        flash('Успешно добавлен/изменён заказ.')
        return redirect(url_for('.given'))
    return render_template('orders_create.html', form=form)
예제 #12
0
def add_order():
    order_form = OrderForm(request.form)
    if order_form.validate_on_submit(): 
        order = Order(title=order_form.title.data,
                      service=order_form.service.data,
                      price=order_form.price.data,
                      status=order_form.status.data,
                      customer=order_form.customer_id.data)
        db_session.add(order)
        db_session.commit()
        flash('Thanks')
        return redirect(url_for('settings'))
    return redirect(url_for('settings'))
예제 #13
0
def index():
    print(current_user)
    tracker = current_user.tracker[0]

    form = OrderForm()
    form.carrier.choices = [('Maersk Line', 'Maersk Line')]
    orders_db = tracker.orders.all()
    orders = []

    for order in orders_db:
        delete = DeleteButton()
        delete.order_id.data = order.id
        orders.append([order, delete])

    if form.validate_on_submit():
        tracker.create_order(form.orderName.data, form.po.data,
                             form.container.data, form.carrier.data,
                             form.dueDate.data)
        return redirect(url_for('index'))

    for order in orders:
        a = request.form
        b = dict(a)

        print(b)
        if "submit" in b and "order_id" in b:
            print(order[0].id)
            print(b["order_id"])
            if order[1].is_submitted() and b["submit"] == ['Delete Order']:
                qry = Order.query.get(int(b["order_id"][0]))
                db.session.delete(qry)
                db.session.commit()

                orders_db = tracker.orders.all()
                orders = []

                for order in orders_db:
                    delete = DeleteButton()
                    delete.order_id.data = order.id
                    orders.append([order, delete])

        return render_template('index.html',
                               title='Hello World',
                               orders=orders,
                               form=form)

    return render_template('index.html',
                           title='Hello World',
                           orders=orders,
                           form=form)
예제 #14
0
파일: routes.py 프로젝트: anhpngt/chariots
    def order():
        form = OrderForm()
        if form.validate_on_submit():
            new_order = Order(address=form.address.data,
                              latlon=','.join([form.lat.data, form.lng.data]),
                              lat=float(form.lat.data),
                              lng=float(form.lng.data),
                              load=form.load.data)
            db.session.add(new_order)
            db.session.commit()

            flash('Order added')
            return redirect(url_for('index'))

        return render_template('order.html', title='Orders', form=form)
예제 #15
0
def orders():
    form = OrderForm()
    shop_session = sfy.Session(session['shop_url'], '2019-04', session['token'])
    # activate the shopify session to use resources.
    sfy.ShopifyResource.activate_session(shop_session)
    if request.method == 'POST':
        if form.validate_on_submit():
                generate_orders(form.number_of_orders_field.data,\
                                form.number_of_line_items_field.data,\
                                form.max_qty_sold_field.data,\
                                form.start_date.data,\
                                form.end_date.data,\
                                session['shop_url'],\
                                session['token'])

    return render_template('orders.html', form=form)
예제 #16
0
def order():
    form = OrderForm()
    
    if form.validate_on_submit():

        address = request.form.get('autocomplete')
        
        geocode_result = gmaps.geocode(address)[0]['geometry']['location']
        latlon = str(geocode_result['lat'])+','+str(geocode_result['lng'])
        
        order = Order(address = address, latlon=latlon, load=form.load.data)
        db.session.add(order)
        db.session.commit()
        flash('order added')

        return redirect(url_for('index'))

    return render_template('order.html', title='Orders', form=form)
예제 #17
0
def make_order(dishname):
    dish = Dish.query.filter_by(dish_name=dishname).first_or_404()
    form = OrderForm()
    if form.validate_on_submit():
        order = Order(quantity=form.quantity.data,
                      status="ongoing",
                      dish=dish,
                      buyer=current_user)
        dish.current_order_number += 1
        db.session.add(order)
        notice = "Dear chef %s, you have a new order made by user %s for your dish %s." % (
            dish.seller.username, current_user.username, dish.dish_name)
        msg = Message(author=None, recipient=dish.seller, body=notice)
        db.session.add(msg)
        dish.seller.add_notification('unread_message_count',
                                     dish.seller.new_messages())
        db.session.commit()
        flash('Your order is successful!')

        return redirect(url_for('index'))
    return render_template('order.html', dish=dish, form=form)
예제 #18
0
def group_order(gid):
    form = OrderForm()
    if form.validate_on_submit():
        order = Orders(username=form.username.data,
                       groupId=gid,
                       orderName=form.orderName.data,
                       quantity=form.quantity.data,
                       size=form.size.data)
        db.session.add(order)
        db.session.commit()
        order_details = Grouporder.query.get(gid)
        total_friends_expected = order_details.n_friends
        order_till_now = Orders.query.filter_by(groupId=gid)
        if total_friends_expected == order_till_now.count():
            email_to_list = [order_details.username]
            email_from = '*****@*****.**'
            email.send_email(
                email_from, email_to_list, "Order status ",
                render_template('returnStatus.html', order=order_till_now))
        flash('Your order placed Successfully {}'.format(form.username.data))

        return redirect('/index')
    return render_template('orderForm.html', form=form)
예제 #19
0
def create_order():
    """
    Creates an order.
    """
    form = OrderForm()
    print(request.get_json())
    # 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():
        virtual_bool = form.data['virtual'] == "True"
        order = Order(nonprofit_id=form.data['nonprofit_id'],
                      title=form.data['title'],
                      description=form.data['description'],
                      location=form.data['location'],
                      start_time=form.data['start_time'],
                      duration=form.data['duration'],
                      karma=form.data['karma'],
                      virtual=virtual_bool)
        db.session.add(order)
        db.session.commit()
        return order.to_dict()
    return 'invalid form'
예제 #20
0
def order():
    """
    Create an ORDER form
    After ORDER form is submitted, create it in the database
    Next, loop over cart and make a CartItem for each item. 
    This will create an Order that contains many order items
    You can then access an Order and query the CartItems directly.
    On successful completion of an order, flash a success message
    """
    form = OrderForm()
    products = []

    if session['cart']:
        for key, value in session['cart'].items():
            product = Product.query.filter_by(id=key).first()
            products.append({
                'id': key,
                'item': product.name,
                'quantity': value['quantity'],
                'price': product.price,
                'subtotal': (product.price * value['quantity']),
                'image_url': product.image_url
            })

    if form.validate_on_submit():
        order = Order(first_name=form.data['first_name'],
                      last_name=form.data['last_name'],
                      email=form.data['email'],
                      address=form.data['address'],
                      postal_code=form.data['postal_code'],
                      city=form.data['city'])
        order.save()

        return redirect(url_for('order_confirm', id=order.id))

    return render_template('order.html', form=form, products=products)
예제 #21
0
def suppliersort(): # hack to quickly get sorting to work. Basically just duplicating index a bunch
    ########## Display Table ############
    inventories = []
    inv_for_display = InventoryItems.query.order_by(InventoryItems.supplier_id, InventoryItems.id) # default ordering    
    if current_user.supplier_id: # if they are a supplier, they should only see their own products
        inv_for_display = inv_for_display.filter_by(supplier_id=current_user.supplier_id)
    else: # otherwise, check for a delivery confirmation
        responses = read_response() #dictionary of emails
        refresh = False
        if responses:
            for order_id in responses:
                order = Orders.query.filter_by(id=order_id).first()
                if order.is_confirmed or order.is_confirmed == False: # unconfirmed/undenined orders are None
                    continue # this order has already been confirmed or declined and the db updated. The email has not been deleted yet. Ignore it
                if responses[order_id]: # if the order was confirmed
                    order.is_confirmed = True
                    db.session.add(order)
                    db.session.commit()
                    ####### Update the inventory quantities ########
                    order_inventory = InventoryInOrder.query.filter_by(order_id=order_id).all()
                    for ordered_inv in order_inventory:
                        ordered_inv.inventory.SKUs += ordered_inv.SKUs
                        db.session.add(ordered_inv.inventory)
                        db.session.commit()
                    flash("Note: Order number {} was confirmed. Expected delivery date of {}. The database has been updated."\
                          .format(order_id, order.order_ETA))
                    refresh = True
                else:
                    order.is_confirmed = False
                    db.session.add(order)
                    db.session.commit()
                    flash("Note: Order number {} was declined".format(order_id))
                    refresh = True
                    
            if refresh:
                return redirect(url_for('suppliersort')) # refresh the page to show the user the flashed messages
            
    for inventory in inv_for_display.all():
        inventories.append({
                'id':inventory.id,
                'item_name':inventory.item_name,
                'inventory_type':inventory.inventory_type,
                'supplier':inventory.supplier.name,
                'SKUs':inventory.SKUs,
                'lead_time':inventory.lead_time,
                'ordering_cost':inventory.ordering_cost,
                'holding_cost':inventory.holding_cost,
                'variable_cost':inventory.variable_cost,
                'demand':inventory.demand,
                'EOQ':EOQ(inventory.ordering_cost, inventory.holding_cost,inventory.demand),
                'reorder_point':reorder_point(inventory.lead_time, inventory.demand)
                })
    ############ Place an Order ################
    form = OrderForm()
    if form.validate_on_submit():
        product = InventoryItems.query.filter_by(id=form.product_id.data).first()
        order = Orders(user_id=current_user.id, supplier_id=product.supplier_id, order_ETA=datetime.utcnow().date() + timedelta(days=product.lead_time))
        db.session.add(order)
        db.session.commit()
        inv_in_order = InventoryInOrder(order_id=order.id, SKUs=form.quantity.data, inventory_id=product.id)
        db.session.add(inv_in_order)
        db.session.commit()
        send_order(order.id)
        flash('Placed an order for {} SKUs of {}. Pending supplier confirmation.'.format(inv_in_order.SKUs, product.item_name))
        return redirect(url_for('suppliersort'))
    
    return render_template('suppliersort.html', title='Home', inventories=inventories, form=form)