author | Tero Marttila <terom@fixme.fi> |
Wed, 22 Dec 2010 21:30:27 +0200 | |
changeset 8 | 27e37082625e |
parent 7 | bbac4b0f4320 |
child 10 | 4bdb45071c89 |
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 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
8 |
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
|
9 |
|
7 | 10 |
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
|
11 |
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
|
12 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
class AppHandler (object): |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
15 |
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
|
16 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
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
|
18 |
""" |
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 |
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
|
21 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
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
|
23 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
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
|
25 |
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
|
26 |
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
|
27 |
""" |
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 |
self.app = app |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
self.request = request |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
self.urlmap = urlmap |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
def build_url (self, endpoint, **values) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
Return an URL for the given endpoint, applying the given values |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
""" |
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 |
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
|
39 |
|
7 | 40 |
@property |
41 |
def POST (self) : |
|
42 |
""" |
|
43 |
Access request's POST data |
|
44 |
""" |
|
45 |
||
46 |
# MultiDict from werkzeug.Request |
|
47 |
return self.request.form |
|
48 |
||
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
49 |
def respond (self, url_values) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
50 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
51 |
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
|
52 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
53 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
54 |
raise NotImplementedError() |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
55 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
56 |
class PageHandler (AppHandler) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
57 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
58 |
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
|
59 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
60 |
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
|
61 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
62 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
63 |
def respond (self, url_values) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
64 |
title = "Index" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
65 |
css = [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
66 |
"/static/layout.css", |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
67 |
"/static/style.css", |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
68 |
"/static/forms.css", |
7 | 69 |
"/static/treelist.css", |
70 |
||
71 |
"/static/jquery-ui/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
|
72 |
] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
73 |
scripts = [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
74 |
"/static/js/jquery.js", |
7 | 75 |
"/static/js/jquery-ui.min.js", # fairly big |
76 |
"/static/js/jquery-ui-timepicker.js", |
|
77 |
"/static/js/jquery.ui.datepicker-fi.js", |
|
78 |
||
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
79 |
"/static/js/forms.js", |
7 | 80 |
|
6
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
81 |
#"/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
|
82 |
#"/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
|
83 |
#"/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
|
84 |
] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
85 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
86 |
head = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
87 |
tags.title(title), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
88 |
(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
|
89 |
# 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
|
90 |
(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
|
91 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
92 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
93 |
# 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
|
94 |
# 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
|
95 |
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
|
96 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
97 |
header = ("Foo List") |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
98 |
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
|
99 |
menu = [tags.ul(tags.li(tags.a(href=url)(name)) for name, url in [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
100 |
("Etusivu", self.build_url(urls.Index)), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
101 |
("Uusi tilaus", self.build_url(urls.NewOrderView)), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
102 |
("Tilaukset", self.build_url(urls.OrdersView)), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
103 |
("Tilaajat", self.build_url(urls.CustomersView)), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
104 |
])] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
105 |
footer = ("Copyright?") |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
106 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
107 |
# render page HTML |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
108 |
content = self.render(**url_values) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
109 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
110 |
layout = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
111 |
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
|
112 |
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
|
113 |
tags.div(id='menu')(menu), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
114 |
tags.div(id='nav')(nav), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
115 |
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
|
116 |
), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
117 |
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
|
118 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
119 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
120 |
# perform the actual rendering (run generators etc.) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
121 |
html_text = unicode(html.document(head, layout)) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
122 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
123 |
# response object |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
124 |
# XXX: unicode? |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
125 |
return Response(html_text, mimetype='text/html') |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
126 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
127 |
def render (self, **args) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
128 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
129 |
Render and return HTML for page content. |
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 |
XXX: must be HTML object, support just text? |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
132 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
133 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
134 |
raise NotImplementedError() |
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 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
137 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
138 |
### XXX: random test controllers |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
139 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
140 |
class Document (AppHandler) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
141 |
""" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
142 |
PDF generation/export |
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 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
145 |
def respond (self, url_values) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
146 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
147 |
title = url_values.get('name', "Hello World") |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
148 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
149 |
tpl = pdf.PageTemplate('id', |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
150 |
header_columns = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
151 |
("", ""), |
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 |
("", ""), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
154 |
("Vuokrasopimus", "%(today)s\n" + title + "\n"), |
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 |
footer_columns = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
157 |
("Teekkarispeksi Ry", "www.teekkarispeksi.fi"), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
158 |
("Tekniikkavastaava", "Juha Kallas\n045 xxx yyzz\njskallas@cc.hut.fi"), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
159 |
("Varastovastaava", "Joel Pirttimaa\n045 xxx yyzz\njhpirtti@cc.hut.fi"), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
160 |
("", ""), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
161 |
), |
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 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
164 |
doc = pdf.DocumentTemplate([tpl], |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
165 |
title = title, author = "A. N. Onous" |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
166 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
167 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
168 |
# stylesheet |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
169 |
styles = pdf.Styles |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
170 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
171 |
# tree root |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
172 |
list_seq = pdf.ListItem.seq |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
173 |
tree = pdf.ListItem("Sopimusehdot", styles.h2, None, list_seq(), [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
174 |
pdf.ListItem("Osapuolet", styles.list_h2, None, list_seq(), [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
175 |
pdf.ListItem(None, None, "Teekkarispeksi ry (Y-tunnus 1888541-7), jäljempänä “Vuokranantaja”."), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
176 |
pdf.ListItem(None, None, title + u", jäljempänä “Vuokraaja”. 1.1 ja 1.2 jäljempänä yhdessä “osapuolet”.") |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
177 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
178 |
pdf.ListItem("Kaluston lainaaminen", styles.list_h2, None, list_seq(), [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
179 |
pdf.ListItem("Yleistä", styles.list_h3, "Tässä sopimuksessa sovitaan toiminnasta Vuokranantajan lainatessa tanssimattoja Vuokraajalle"), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
180 |
pdf.ListItem("Vuokranantajan velvollisuudet", styles.list_h3, "Vuokranantaja sitoutuu toimittamaan sovittuna ajankohtana Vuokraajalle erikseen sovittava (liite) määrä tanssimattoja."), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
181 |
pdf.ListItem("Blaa Blaa", styles.list_h3, "Etc."), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
182 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
183 |
pdf.ListItem("Tätä sopimusta ja sitä koskevia erimielisyyksiä koskevat määräykset", styles.list_h2, None, list_seq(), [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
184 |
pdf.ListItem("Sopimuksen voimassaolo", styles.list_h3, "Sopimus on osapuolia sitova sen jälkeen, kun osapuolet ovat sen allekirjoittaneet."), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
185 |
pdf.ListItem("Muutosten tekeminen", styles.list_h3, "Muutokset sopimukseen on tehtävä kirjallisesti molempien osapuolten kesken."), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
186 |
pdf.ListItem("Blaa Blaa", styles.list_h3, "Etc."), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
187 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
188 |
]) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
189 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
190 |
from reportlab.platypus import Paragraph as p |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
191 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
192 |
elements = [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
193 |
p("Vuokrasopimus", styles.h1), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
194 |
p("Teekkarispeksi ry AV-tekniikka", styles.h3), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
195 |
] + list(tree.render_pdf()) + [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
196 |
p("Nouto", styles.h2), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
197 |
p("\t\tAika: _______________\tPaikka: _______________", styles.text), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
198 |
p("Palautus", styles.h2), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
199 |
p("\t\tAika: _______________\tPaikka: _______________", styles.text), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
200 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
201 |
pdf.SignatureBlock(("Vuokranantaja", "Vuokraaja"), ("%(column)s", "Nimen selvennys", "Aika ja paikka"), { |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
202 |
('Vuokranantaja', 'Nimen selvennys'): "Joel Pirttimaa", |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
203 |
('Vuokranantaja', 'Aika ja paikka'): 'Otaniemi, %(today)s', |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
204 |
('Vuokraaja', 'Aika ja paikka'): 'Otaniemi, %(today)s', |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
205 |
}), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
206 |
] |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
207 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
208 |
# render elements to buf as PDF code |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
209 |
pdf_code = doc.render_string(elements) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
210 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
211 |
return Response(pdf_code, mimetype='application/pdf') |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
212 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
213 |
class Index (PageHandler) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
214 |
DATA = ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
215 |
(100, "Top A", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
216 |
(200, "Top B", [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
217 |
(210, "Mid BA", [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
218 |
(211, "Sub BAA", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
219 |
(212, "Sub BAB", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
220 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
221 |
(220, "Mid BB", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
222 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
223 |
(300, "Top C", [ |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
224 |
(310, "Mid CA", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
225 |
(320, "Mid CB", []), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
226 |
]), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
227 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
228 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
229 |
def render (self) : |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
230 |
# build data set |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
231 |
data = self.DATA |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
232 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
233 |
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
|
234 |
return tags.li( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
235 |
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
|
236 |
# item text |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
237 |
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
|
238 |
'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
|
239 |
)), text, class_='text'), |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
240 |
), |
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 |
# children |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
243 |
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
|
244 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
245 |
# |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
246 |
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
|
247 |
) |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
248 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
249 |
# render it |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
250 |
return ( |
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
251 |
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
|
252 |
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
|
253 |
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
|
254 |
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
|
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 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
258 |
|
72c73df76db2
Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
259 |