author | Tero Marttila <terom@fixme.fi> |
Fri, 07 Jan 2011 03:19:37 +0200 | |
changeset 35 | 13b5dd3a7a5f |
parent 32 | 10c48a6843ad |
child 37 | eabea2857143 |
permissions | -rw-r--r-- |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
# coding: utf-8 |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
Generic controller base classes. |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
5 |
respond(Request) -> Response |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
6 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
7 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
8 |
import werkzeug |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
from werkzeug import Response |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
10 |
|
7 | 11 |
from svv import html, pdf |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
12 |
from svv.html import tags |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
class AppHandler (object): |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
15 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
16 |
Per-request handler type, containing the request context and implementing the response. |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
18 |
Works on a generic level, i.e. WSGI/Werkzeug URL-mapped request in, response out. |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
19 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
def __init__ (self, app, request, urlmap) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
Initialize for processing the given Request, to prepare for action-method later on |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
25 |
app - the global Application state |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
request - the request state |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
urlmap - the URL map we were matched through |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
self.app = app |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
self.request = request |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
self.urlmap = urlmap |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
34 |
def url_for (self, endpoint, **values) : |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
""" |
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
36 |
Return an URL for the given endpoint, applying the given URL-embedded values |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
return self.urlmap.build(endpoint, values) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
41 |
def redirect_for (self, endpoint, **values) : |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
42 |
""" |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
43 |
Return a Response that will redirect the client to the given endpoint. |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
44 |
""" |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
45 |
|
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
46 |
return werkzeug.redirect(self.url_for(endpoint, **values)) |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
47 |
|
7 | 48 |
@property |
49 |
def POST (self) : |
|
50 |
""" |
|
51 |
Access request's POST data |
|
52 |
""" |
|
53 |
||
54 |
# MultiDict from werkzeug.Request |
|
55 |
return self.request.form |
|
56 |
||
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
57 |
def respond (self, **url_values) : |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
58 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
59 |
Handle request that was mapped to ourselves via the URL routing, using given dict of values from URL. |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
60 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
61 |
|
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
62 |
# process e.g. POST data for e.g. redirect |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
63 |
response = self.process(**url_values) |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
64 |
|
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
65 |
if not response : |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
66 |
# assume superclass does something else if process didn't handle it |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
67 |
pass |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
68 |
|
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
69 |
return response |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
70 |
|
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
71 |
def process (self, **args) : |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
72 |
""" |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
73 |
Process incoming POST data, optionally returning a redirect response. |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
74 |
""" |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
75 |
|
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
76 |
# default to ignore |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
77 |
pass |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
78 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
79 |
class PageHandler (AppHandler) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
80 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
81 |
Specialized AppHandler for normal HTML page views. |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
82 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
83 |
Renders the layout template and HTML. |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
84 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
85 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
86 |
def render_content (self, **args) : |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
87 |
""" |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
88 |
Render and return HTML for page content. |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
89 |
|
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
90 |
XXX: must be HTML object, support just text? |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
91 |
""" |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
92 |
|
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
93 |
raise NotImplementedError() |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
94 |
|
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
95 |
def render_layout (self, content) : |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
96 |
""" |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
97 |
Render the page layout for the given content block. |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
98 |
""" |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
99 |
|
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
100 |
# XXX: layout template, should be somewhere far away |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
101 |
title = "Index" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
102 |
css = [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
103 |
"/static/layout.css", |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
104 |
"/static/style.css", |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
105 |
"/static/forms.css", |
13 | 106 |
"/static/tables.css", |
107 |
||
7 | 108 |
"/static/treelist.css", |
109 |
||
22
c68ca09b08b9
Add external javascript libraries under ext/
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
110 |
"/static/jquery-ui.theme/jquery-ui.css", |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
111 |
] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
112 |
scripts = [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
113 |
"/static/js/jquery.js", |
7 | 114 |
"/static/js/jquery-ui.min.js", # fairly big |
115 |
"/static/js/jquery-ui-timepicker.js", |
|
22
c68ca09b08b9
Add external javascript libraries under ext/
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
116 |
"/static/js/jquery-ui-datepicker-fi.js", |
7 | 117 |
|
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
118 |
"/static/js/forms.js", |
7 | 119 |
|
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
120 |
#"/static/js/prototype.js", |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
121 |
#"/static/js/scriptaculous/scriptaculous.js", |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
122 |
#"/static/js/treelist.js" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
123 |
] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
124 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
125 |
head = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
126 |
tags.title(title), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
127 |
(tags.link(rel='Stylesheet', type="text/css", href=src) for src in css), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
128 |
# XXX: script can't self-close >_< |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
129 |
(tags.script(src=src)(" ") for src in scripts), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
130 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
131 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
132 |
# XXX: silly circular-import hack for urls |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
133 |
# it's not sustainable for a base class to referr to its subclasses at define time |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
134 |
from svv import urls |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
135 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
136 |
header = ("Foo List") |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
137 |
nav = [tags.ul(tags.li(tags.a(href='#')(name)) for name in ['Nav A', 'Nav B', 'Nav C'])] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
138 |
menu = [tags.ul(tags.li(tags.a(href=url)(name)) for name, url in [ |
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
139 |
("Etusivu", self.url_for(urls.Index)), |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
140 |
("Uusi tilaus", self.url_for(urls.NewOrderView)), |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
141 |
("Tilaukset", self.url_for(urls.OrdersView)), |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
142 |
("Tilaajat", self.url_for(urls.CustomersView)), |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
143 |
])] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
144 |
footer = ("Copyright?") |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
145 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
146 |
layout = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
147 |
tags.div(id='header')(header), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
148 |
tags.div(id='container')( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
149 |
tags.div(id='menu')(menu), |
16 | 150 |
# tags.div(id='nav')(nav), |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
151 |
tags.div(id='content')(content), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
152 |
), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
153 |
tags.div(id='footer')(footer), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
154 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
155 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
156 |
# perform the actual rendering (run generators etc.) |
11
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
157 |
return unicode(html.document(head, layout)) |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
158 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
159 |
def render (self, **url_values) : |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
160 |
""" |
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
161 |
Render full page HTML |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
162 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
163 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
164 |
# render page content |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
165 |
content = self.render_content(**url_values) |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
166 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
167 |
# render into layout |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
168 |
response = self.render_layout(content) |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
169 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
170 |
# ok |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
171 |
return response |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
172 |
|
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
173 |
def respond (self, **url_values) : |
11
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
174 |
""" |
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
175 |
Build and return a response from the following steps: |
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
176 |
|
11
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
177 |
* process() |
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
178 |
* render() -> render_content() as HTML |
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
179 |
""" |
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
180 |
|
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
181 |
# optional processing |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
182 |
response = super(PageHandler, self).respond(**url_values) |
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
183 |
|
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
184 |
if not response : |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
185 |
# render page HTML |
11
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
186 |
html = self.render(**url_values) |
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
187 |
|
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
188 |
# response object |
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
189 |
# XXX: unicode? |
90a3c570c227
NewOrderView now works ~fully, including error handling
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
190 |
return Response(html, mimetype='text/html') |
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
191 |
|
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
192 |
# ok |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
193 |
return response |
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
194 |
|
15
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
195 |
class DocumentHandler (AppHandler) : |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
196 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
197 |
PDF generation/export |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
198 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
199 |
|
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
200 |
def respond (self, **url_values) : |
15
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
201 |
""" |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
202 |
Generate the document, and return it as a .pdf file, with the filename generated from the document's title. |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
203 |
""" |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
204 |
|
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
205 |
# optional processing |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
206 |
response = super(DocumentHandler, self).respond(**url_values) |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
207 |
|
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
208 |
if not response : |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
209 |
pdf_file = self.generate(**url_values) |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
210 |
|
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
211 |
# file wrapper |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
212 |
# XXX: is this any use at all for StringIO? |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
213 |
pdf_file = werkzeug.wrap_file(self.request.environ, pdf_file) |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
214 |
|
32
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
215 |
# respond with file wrapper |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
216 |
response = Response(pdf_file, mimetype='application/pdf', direct_passthrough=True) |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
217 |
|
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
218 |
# ok |
10c48a6843ad
Optionally take contract text from form input
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
219 |
return response |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
220 |
|
15
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
221 |
def generate (self, **url_values) : |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
222 |
""" |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
223 |
Generate the PDF document as a file-like object. |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
224 |
""" |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
225 |
|
15
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
226 |
document, elements = self.generate_document(**url_values) |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
227 |
|
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
228 |
# render and return StringIO |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
229 |
return document.render_buf(elements) |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
230 |
|
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
231 |
def generate_document (self, **url_values) : |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
232 |
""" |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
233 |
Return the |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
234 |
(DocumentTemplate, elements) |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
235 |
to generate the PDF document from. |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
236 |
""" |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
237 |
|
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
238 |
raise NotImplementedError() |
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
239 |
|
e098ee83b363
Implement OrderContractDocument
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
240 |
### XXX: random test controllers |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
241 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
242 |
class Index (PageHandler) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
243 |
DATA = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
244 |
(100, "Top A", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
245 |
(200, "Top B", [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
246 |
(210, "Mid BA", [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
247 |
(211, "Sub BAA", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
248 |
(212, "Sub BAB", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
249 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
250 |
(220, "Mid BB", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
251 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
252 |
(300, "Top C", [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
253 |
(310, "Mid CA", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
254 |
(320, "Mid CB", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
255 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
256 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
257 |
|
10
4bdb45071c89
Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
258 |
def render_content (self) : |
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
259 |
# build data set |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
260 |
data = self.DATA |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
261 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
262 |
def render_item (id, text, children) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
263 |
return tags.li( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
264 |
tags.div(class_='item')( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
265 |
# item text |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
266 |
tags.a(tags.input(type='checkbox', name_=id, checked=( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
267 |
'checked' if self.request.form.get(str(id)) else None |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
268 |
)), text, class_='text'), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
269 |
), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
270 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
271 |
# children |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
272 |
tags.ul(render_item(*item) for item in children if item) if children else None, |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
273 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
274 |
# |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
275 |
class_=('more open' if children else None), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
276 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
277 |
|
19 | 278 |
# XXX: nothing much to see here |
279 |
return tags.h1("Mui.") |
|
280 |
||
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
281 |
# render it |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
282 |
return ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
283 |
tags.h3("Item list"), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
284 |
tags.form(action='.', method='post')( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
285 |
tags.ul(class_='treelist')(render_item(*item) for item in data), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
286 |
tags.input(type='submit'), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
287 |
), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
288 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
289 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
290 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
291 |