author | Tero Marttila <terom@paivola.fi> |
Sun, 10 Feb 2013 13:18:01 +0200 | |
changeset 203 | 8dc7db817818 |
parent 197 | 9f18b11647fb |
child 347 | d368f3b8a117 |
permissions | -rw-r--r-- |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
""" |
178
f9f5e669bace
pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
164
diff
changeset
|
2 |
WSGI Application with pvl.web.urls-mapped Handlers building pvl.web.html. |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
import werkzeug |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
from werkzeug.wrappers import Request, Response |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
from werkzeug.exceptions import HTTPException |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
|
197
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
9 |
import pvl.web.response |
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
10 |
|
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
import logging; log = logging.getLogger('pvl.web.application') |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
class Application (object) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
""" |
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
15 |
Main wsgi entry point state. |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
URLS = None |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
|
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
20 |
# TODO: charset |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
21 |
|
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
22 |
def __init__ (self, urls=None, layout=None) : |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
urls - werkzeug.routing.Map -> Handler |
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
25 |
layout - template with {TITLE} and {HEAD} and {BODY} |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
if not urls : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
urls = self.URLS |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
if not urls : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
raise ValueError("No URLS/urls=... given") |
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
33 |
|
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
34 |
self.layout = layout |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
self.urls = urls |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
def respond (self, request) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
Lookup Request -> web.Handler, params |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
# bind to request |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
urls = self.urls.bind_to_environ(request) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
# lookup |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
handler, params = urls.match() |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
# handler instance |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
handler = handler(self, request, urls, params) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
try : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
# apply |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
return handler.respond() |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
finally : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
handler.cleanup() |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
@Request.application |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
def __call__ (self, request) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
WSGI entry point, werkzeug Request -> Response |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
try : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
return self.respond(request) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
except HTTPException as ex : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
return ex |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
from pvl.invoke import merge # XXX |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
from pvl.web.html import tags as html |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
class Handler (object) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
Per-Request controller/view, containing the request context and generating the response. |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
TITLE = None |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
CSS = ( |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
#"/static/...css", |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
JS = ( |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
#"/static/....js" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
def __init__ (self, app, request, urls, params) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
app - wsgi.Application |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
request - werkzeug.Request |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
urls - werkzeug.routing.Map.bind_to_environ() |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
self.app = app |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
self.request = request |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
self.urls = urls |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
self.params = params |
203
8dc7db817818
pvl.web.Handler: add init() method
Tero Marttila <terom@paivola.fi>
parents:
197
diff
changeset
|
97 |
|
8dc7db817818
pvl.web.Handler: add init() method
Tero Marttila <terom@paivola.fi>
parents:
197
diff
changeset
|
98 |
self.init() |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
|
203
8dc7db817818
pvl.web.Handler: add init() method
Tero Marttila <terom@paivola.fi>
parents:
197
diff
changeset
|
100 |
def init (self) : |
8dc7db817818
pvl.web.Handler: add init() method
Tero Marttila <terom@paivola.fi>
parents:
197
diff
changeset
|
101 |
""" |
8dc7db817818
pvl.web.Handler: add init() method
Tero Marttila <terom@paivola.fi>
parents:
197
diff
changeset
|
102 |
Initialize on request. |
8dc7db817818
pvl.web.Handler: add init() method
Tero Marttila <terom@paivola.fi>
parents:
197
diff
changeset
|
103 |
""" |
8dc7db817818
pvl.web.Handler: add init() method
Tero Marttila <terom@paivola.fi>
parents:
197
diff
changeset
|
104 |
|
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
def url (self, handler=None, **params) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
107 |
Return an URL for given endpoint, with parameters, |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
108 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
if not handler : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
111 |
# XXX: just generate a plain-relative '?foo=...' url instead? |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
handler = self.__class__ |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
113 |
params = merge(self.params, params) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
return self.urls.build(handler, params) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
116 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
117 |
def title (self) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
118 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
119 |
Render site/page title as text. |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
121 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
122 |
return self.TITLE |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
123 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
124 |
def render (self) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
125 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
126 |
Render page content (as <body>...</body>). |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
127 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
128 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
129 |
raise NotImplementedError() |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
130 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
131 |
def render_html (self) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
132 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
133 |
Render page layout (as <html>). |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
134 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
135 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
136 |
title = self.title() |
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
137 |
head = html( |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
138 |
( |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
139 |
html.link(rel='Stylesheet', type="text/css", href=src) for src in self.CSS |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
140 |
), |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
141 |
( |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
142 |
html.script(src=src, type='text/javascript', _selfclosing=False) for src in self.JS |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
143 |
), |
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
144 |
) |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
145 |
body = html(self.render()) |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
146 |
|
178
f9f5e669bace
pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
164
diff
changeset
|
147 |
if not title : |
f9f5e669bace
pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
164
diff
changeset
|
148 |
raise Exception("%s: no page title!" % (self, )) |
f9f5e669bace
pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
164
diff
changeset
|
149 |
|
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
150 |
if self.app.layout : |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
151 |
return self.app.layout.format( |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
152 |
TITLE = unicode(title), |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
153 |
HEAD = unicode(head), |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
154 |
BODY = unicode(body), |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
155 |
) |
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
156 |
else : |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
157 |
return html.document(html.html( |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
158 |
html.head( |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
159 |
html.title(title), |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
160 |
head, |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
161 |
), |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
162 |
html.body( |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
163 |
html.h1(title), |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
164 |
body, |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
165 |
) |
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
166 |
)) |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
167 |
|
197
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
168 |
def response_file (self, file) : |
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
169 |
""" |
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
170 |
Wrap a file for returning in a response with direct_passthrough=True. |
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
171 |
""" |
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
172 |
|
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
173 |
return werkzeug.wrap_file(self.request.environ, file) |
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
174 |
|
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
175 |
def process (self, **params) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
176 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
177 |
Process request args to build internal request state. |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
178 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
179 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
180 |
pass |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
181 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
182 |
def respond (self) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
183 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
184 |
Generate a response, or raise an HTTPException |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
185 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
186 |
Does an HTML layout'd response per default. |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
187 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
188 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
189 |
# returning e.g. redirect? |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
190 |
response = self.process(**self.params) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
191 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
192 |
if response : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
193 |
return response |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
194 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
195 |
# render as html per default |
197
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
196 |
# XXX: might also be string? |
164
2c66ab45d91e
pvl.web.rrd: support --web-layout to use external template
Tero Marttila <terom@paivola.fi>
parents:
151
diff
changeset
|
197 |
text = unicode(self.render_html()) |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
198 |
|
197
9f18b11647fb
pvl.web.response: html/json/image response encodings
Tero Marttila <terom@paivola.fi>
parents:
178
diff
changeset
|
199 |
return pvl.web.response.html(text) |
151
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
200 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
201 |
def cleanup (self) : |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
202 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
203 |
After request processing. Do not fail :) |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
204 |
""" |
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
205 |
|
8a9f01036091
split pvl.web from pvl.verkko, rename test.py -> pvl.verkko-dhcp
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
206 |
pass |