Exemplo n.º 1
0
def order():
    if request.method == 'GET':
        session.clear()
    data = db.session.query(Config).first()
    if data.state != 'ordering':
        return redirect("/")
    form = OrderForm(request.form)
    if request.method == 'POST' and form.validate():
        db.session.rollback()
        db.session.expunge_all()
        if form.item.data == 'half':
            order = Half()
            order.email = form.email.data + EMAIL_DOMAIN
            order.location = form.location.data
            order.topping1 = form.topping1.data
            order.topping2 = form.topping2.data
            order.topping3 = form.topping3.data
        elif form.item.data == 'whole':
            order = Pizza()
            person = Person()
            order.topping1_left = form.topping1.data
            order.topping2_left = form.topping2.data
            order.topping3_left = form.topping3.data
            order.topping1_right = form.topping4.data
            order.topping2_right = form.topping5.data
            order.topping3_right = form.topping6.data
            order.sauce = form.sauce.data
            order.size = 'Large'
            person.email = form.email.data + EMAIL_DOMAIN
            person.location = form.location.data
            order.person1 = person
            db.session.add(person)
        elif form.item.data == 'medium':
            order = Pizza()
            person = Person()
            order.topping1_left = form.topping1.data
            order.topping2_left = form.topping2.data
            order.topping1_right = form.topping4.data
            order.topping2_right = form.topping5.data
            order.sauce = form.sauce.data
            order.size = 'Medium'
            person.email = form.email.data + EMAIL_DOMAIN
            person.location = form.location.data
            order.person1 = person
            db.session.add(person)
        order.time_added = datetime.datetime.now()
        db.session.add(order)
        db.session.flush()
        session['order_id'] = order.id
        session['order_type'] = type(order).__name__
        session['payment_amount'] = set_price(form)
        url = 'https://api.venmo.com/v1/oauth/authorize?client_id={}&scope=make_payments&response_type=code'.format(
            CONSUMER_ID)
        return redirect(url)
    return render_template('order.html',
                           data=data,
                           form=form,
                           domain=EMAIL_DOMAIN,
                           large_price=LARGE_PRICE,
                           medium_price=MEDIUM_PRICE)
Exemplo n.º 2
0
def order():
	if request.method == 'GET':
		session.clear()
	data = db.session.query(Config).first()
	if data.state != 'ordering':
		return redirect("/")
	form = OrderForm(request.form)
	if request.method == 'POST' and form.validate():
		db.session.rollback()
		db.session.expunge_all()
		if form.item.data == 'half':
			order = Half()
			order.email = form.email.data + EMAIL_DOMAIN
			order.location = form.location.data
			order.topping1 = form.topping1.data
			order.topping2 = form.topping2.data
			order.topping3 = form.topping3.data
		elif form.item.data == 'whole':
			order = Pizza()
			person = Person()
			order.topping1_left = form.topping1.data
			order.topping2_left = form.topping2.data
			order.topping3_left = form.topping3.data
			order.topping1_right = form.topping4.data
			order.topping2_right = form.topping5.data
			order.topping3_right = form.topping6.data
			order.sauce = form.sauce.data
			order.size = 'Large'
			person.email = form.email.data + EMAIL_DOMAIN
			person.location = form.location.data
			order.person1 = person
			db.session.add(person)
		elif form.item.data == 'medium':
			order = Pizza()
			person = Person()
			order.topping1_left = form.topping1.data
			order.topping2_left = form.topping2.data
			order.topping1_right = form.topping4.data
			order.topping2_right = form.topping5.data
			order.sauce = form.sauce.data
			order.size = 'Medium'
			person.email = form.email.data + EMAIL_DOMAIN
			person.location = form.location.data
			order.person1 = person
			db.session.add(person)
		order.time_added = datetime.datetime.now()
		db.session.add(order)
		db.session.flush()
		session['order_id'] = order.id
		session['order_type'] = type(order).__name__
		session['payment_amount'] = set_price(form)
		url = 'https://api.venmo.com/v1/oauth/authorize?client_id={}&scope=make_payments&response_type=code'.format(CONSUMER_ID)
		return redirect(url)
	return render_template('order.html', data=data, form=form, domain=EMAIL_DOMAIN, 
						   large_price=LARGE_PRICE, medium_price=MEDIUM_PRICE)
Exemplo n.º 3
0
def new_order(supplierid):
    supplier = Supplier.query.filter_by(id=supplierid).first_or_404()
    form = OrderForm()
    try:
        if form.is_submitted():
            # when a post is submitted, we first check if all fields are valid
            if form.validate():
                order = create_order(form, supplier)
                if order:
                    db.session.add(order)
                    db.session.commit()
                    app.logger.info('Order "{}" criada com sucesso'.format(
                        order.id))
                    return redirect(
                        url_for('detail_supplier', supplierid=supplier.id))
                else:
                    flash(('A compra não foi registrada porque o valor total '
                           'dos produtos foi R$0,00!'))
                    return redirect(
                        url_for('detail_supplier', supplierid=supplier.id))
            else:
                # when a field is not valid, we flash a message with the error.
                app.logger.error(str(form.errors))
                flash("Erro! Detalhes: {}".format(str(form.errors)))
        # when the page is loaded, a GET is executed.
        # In this case, we only fill table fields.
        else:
            if len(supplier.portfolio) == 0:
                msg = ('O fornecedor "{}"" não tem nenhum produto em seu'
                       ' portfolio. Antes de cadastrar uma compra, você'
                       ' precisa adicionar produtos ao seu portfolio.').format(
                           supplier.name)
                app.logger.info(msg)
                flash(msg)
                return redirect(
                    url_for('edit_supplier', supplierid=supplier.id))
            for item in supplier.portfolio:
                order_item_form = OrderItemForm()
                order_item_form.item = item.name
                order_item_form.quantity = 0
                order_item_form.unit_price = 0
                order_item_form.unity = ""
                form.order_items.append_entry(order_item_form)
    except Exception as err:
        db.session.rollback()
        app.logger.error(str(err))
        flash('ERRO: {}'.format(str(err)))
    return render_template('orderform.html',
                           title="Cadastrar compra",
                           form=form,
                           supplier=supplier)
Exemplo n.º 4
0
def submit():
    form = OrderForm()
    for error in form.errors.items():
        print(error)
    import sys
    sys.stdout.flush()
    if request.method == "POST" and form.validate():
        email = form.email.data
        if validate_email(email):
            import sys
            sys.stdout.flush()
            user = User.get_or_create(email)
            orders = request.get_json()["order"]
            orders = [
                Order(user, order["id"], order["in_half"], order["notes"])
                for order in orders
            ]
            place_order(email, orders)
            return jsonify({"success": True})
    return jsonify({"success": False})
Exemplo n.º 5
0
def edit_order(orderid):
    order = Order.query.filter_by(id=orderid).first_or_404()
    supplier = Supplier.query.filter_by(id=order.supplier_id).first_or_404()
    form = OrderForm(obj=order)
    try:
        if form.is_submitted():
            # when a post is submitted, we first check if all fields are valid
            if form.validate():
                order = create_order(form, supplier, order)
                if order:
                    db.session.commit()
                    app.logger.info('Order "{}" editada com sucesso'.format(
                        order.id))
                    return redirect(
                        url_for('detail_supplier', supplierid=supplier.id))
                else:
                    flash(('A compra não foi alterada porque o valor total '
                           'dos produtos foi R$0,00!'))
                    return redirect(
                        url_for('detail_supplier', supplierid=supplier.id))
            else:
                # when a field is not valid, we flash a message with the error.
                app.logger.error(str(form.errors))
                flash('Erro! Detalhes: {}'.format(str(form.errors)))
        else:
            for item in supplier.portfolio:
                if not order.has_item(item):
                    order_item_form = OrderItemForm()
                    order_item_form.item = item.name
                    order_item_form.quantity = 0
                    order_item_form.unit_price = 0
                    order_item_form.unity = ""
                    form.order_items.append_entry(order_item_form)
    except Exception as err:
        db.session.rollback()
        app.logger.error(str(err))
        flash('ERRO: {}'.format(str(err)))
    return render_template('orderform.html',
                           title="Editar compra",
                           form=form,
                           supplier=supplier)
Exemplo n.º 6
0
def edit(id):
    order = Orders.query.filter_by(id=id).first()
    form = ShippingForm()
    delete_order_form = DeleteOrderForm()
    order_form = OrderForm()
    add_item_form = AddItemsForm()

    ship_status = dict(form.ship_status.choices).get(form.ship_status.data)

    if form.shipping_submit.data and form.validate():
        if form.order_id.data is not None:
            order.order_id = form.order_id.data
            if order.ship_amount is None:
                order.ship_amount = form.ship_amount.data
                total = order.amount + order.ship_amount
                if order.order_status == 'Paid':
                    due = order.ship_amount
                else:
                    due = total
                message = "*{}'s* order has been shipped out. \n*Total:* {} \n*Due:* {} \n*Items(SGD):* {} \n*Status:* {} \n*Shipping(SGD):* {} \n*Shipping Status:* {}".format(
                    order.buyer.name, total, due, order.amount,
                    order.order_status, order.ship_amount, ship_status)
                print(message)
                sendtelegram(message)
        if form.ship_amount.data is not None:
            order.ship_amount = form.ship_amount.data
        if form.ship_status.data is not None:
            order.ship_status = ship_status
        db.session.commit()
        flash("Shipping info updated", "success")
        return redirect(url_for("edit", id=id))
    if delete_order_form.delete_order_submit.data and delete_order_form.validate(
    ):
        db.session.delete(order)
        db.session.commit()
        flash("Order deleted", "success")
        return redirect(url_for('index'))
    if order_form.order_submit.data and order_form.validate():
        order.order_status = dict(order_form.order_status.choices).get(
            order_form.order_status.data)
        if order_form.amount.data is not None:
            order.amount = order_form.amount.data
        db.session.commit()
        flash("Order details updated", "success")
        return redirect(url_for("edit", id=id))
    if add_item_form.add_items_submit.data and add_item_form.validate():
        if add_item_form.amount is not None:
            operators = add_item_form.operators.data
            if operators == 'add':
                order.amount += add_item_form.amount.data
            elif operators == 'deduct':
                order.amount -= add_item_form.amount.data
        db.session.commit()
        flash("Order amount updated", "success")
        return redirect(url_for('edit', id=id))
    if (order.order_id and order.ship_amount
        ) is not None and form.validate() and form.shipping_submit.data:
        total = order.amount + order.ship_amount
        if order.amount == 'Paid':
            due = order.ship_amount
        else:
            due = total
        message = "*{}'s* order has been shipped out. \n*Total:* {} \n*Due:* {} \n*Order:* {} \n*Status:* {} \n*Shipping:* {} \n*Shipping Status:* {}".format(
            order.buyer.name, total, due, order.amount, order.order_status,
            order.ship_amount, order.ship_status)
        sendtelegram(message)

    return render_template('edit.html',
                           order=order,
                           form=form,
                           delete_order_form=delete_order_form,
                           order_form=order_form,
                           add_item_form=add_item_form)