ciclos

ref: master

core/blueprints/orders.py


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from flask import request, redirect, url_for, Blueprint, jsonify, render_template
from flask_login import current_user

from core.types.cycle import Cycle, CycleStatus
from core.types.order import Order
from core.database import db

import pdb

orders = Blueprint('orders', __name__, url_prefix = '/orders')

@orders.route('/', methods = ['GET', 'POST'])
def index():
    orders = Order.query.filter(Order.user.has(id = current_user.id)).order_by(Order.id.desc()).all()

    return render_template('orders.html', orders = orders, title = "Seus Pedidos")

@orders.route('/create')
def create():
    current_cycle = Cycle.query.filter_by(status = CycleStatus.published).first()
    if not current_cycle:
        return '', 401

    Order.create_for(current_user, current_cycle)
    return redirect(url_for('cycles.show', id = current_cycle.id))

@orders.route('/<id>', methods = ['POST'])
def update(id):
    order = Order.query.filter_by(id = id).first()

    current_cycle = Cycle.query.filter_by(status = CycleStatus.published).first()
    if not order:
        order = Order.create_for(current_user, current_cycle)

    order.add_products(request.form.getlist('product_ids'))

    if 'confirm' in request.form:
        order.confirm()
        db.commit()

    return redirect(url_for('cycles.show', id = current_cycle.id))

@orders.route('/<id>/reopen', methods = ['GET'])
def reopen(id):
    order = Order.query.get(id)

    order.reopen()
    db.commit()

    current_cycle = Cycle.query.filter_by(status = CycleStatus.published).first()
    return redirect(url_for('cycles.show', id = current_cycle.id))

@orders.route('/<id>/cancel', methods = ['GET'])
def cancel(id):
    order = Order.query.get(id)

    db.delete(order)
    db.commit()

    current_cycle = Cycle.query.filter_by(status = CycleStatus.published).first()
    return redirect(url_for('cycles.show', id = current_cycle.id))