/
views.py
90 lines (77 loc) · 3.25 KB
/
views.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python
# encoding: utf-8
# Copyright (C) 2015 Chintalagiri Shashank
#
# This file is part of tendril.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Docstring for views
"""
from flask import render_template
from flask_user import login_required
from flask import abort
from flask import send_file
from . import production as blueprint
from tendril.dox import production as dxproduction
from tendril.utils.fsutils import Crumb
@blueprint.route('/manifests/<order_sno>')
def manifests(order_sno=None):
if not order_sno:
abort(404)
rfile = dxproduction.get_production_order_manifest_set(order_sno)
# TODO figure out how to delete this file later on.
return send_file(rfile, as_attachment=True)
@blueprint.route('/order/<order_sno>')
@blueprint.route('/order/')
@login_required
def results(order_sno=None):
# Presently only supports getting the latest result. A way to allow
# any result to be retrieved would be nice.
if order_sno is None:
docs = dxproduction.get_all_production_orders()
stage = {'docs': docs,
'crumbroot': '/production',
'breadcrumbs': [Crumb(name="Production", path="/"),
Crumb(name="Orders", path="order/")],
}
return render_template('production_orders.html', stage=stage,
pagetitle="All Production Orders")
else:
docs = dxproduction.get_production_order_docs(order_sno)
order_yaml, order_snomap = \
dxproduction.get_production_order_data(order_sno)
order_indentsno = order_snomap.pop('indentsno')
stage = {'docs': docs,
'order_sno': order_sno,
'order_snomap': order_snomap,
'order_indentsno': order_indentsno,
'order_yaml': order_yaml,
'crumbroot': '/production',
'breadcrumbs': [Crumb(name="Production", path="/"),
Crumb(name="Orders", path="order/"),
Crumb(name=order_sno, path="order/" + order_sno)], # noqa
}
return render_template('production_order_detail.html', stage=stage,
pagetitle="Production Order " + order_sno)
@blueprint.route('/')
@login_required
def main():
latest_prod = dxproduction.get_all_production_orders(limit=5)
stage = {'latest_prod': latest_prod,
'crumbroot': '/production',
'breadcrumbs': [Crumb(name="Production", path="/")],
}
return render_template('production_main.html', stage=stage,
pagetitle='Production')