author | Tero Marttila <terom@paivola.fi> |
Thu, 29 Jan 2015 22:14:59 +0200 | |
changeset 102 | 611787305686 |
parent 92 | e5799432071c |
permissions | -rw-r--r-- |
92
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
from qmsk.utils import flatten, merge |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
from html import escape |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
|
102 | 4 |
import qmsk.web.application |
92
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
class Tag : |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
def __init__ (self, _name=None, *_contents, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
_selfclosing=True, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
_whitespace_sensitive=False, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
**_attrs) : |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
self.name = _name |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
self.contents = _contents or [ ] |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
self.attrs = _attrs or { } |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
# options |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
self.selfclosing = _selfclosing |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
self.whitespace_sensitive = _whitespace_sensitive |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
def __call__ (self, *_contents, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
_selfclosing=None, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
_whitespace_sensitive=None, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
**_attrs): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
return type(self)(self.name, *tuple(flatten(self.contents, _contents)), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
_selfclosing = self.selfclosing if _selfclosing is None else _selfclosing, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
_whitespace_sensitive = self.whitespace_sensitive if _whitespace_sensitive is None else _whitespace_sensitive, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
**merge(self.attrs, _attrs) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
def render_attrs (self): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
for name, value in self.attrs.items(): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
name = name.strip('_').replace('_', '-') |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
if value is True: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
value = name |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
elif value is None: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
continue |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
else: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
value = str(value) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
yield '{name}="{value}"'.format(name=name, value=escape(value, quote=True)) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
def render (self, indent): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
Iterate over lines of output HTML. |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
open = (self.contents or not self.selfclosing) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
if self.name and self.attrs and open: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
yield indent, '<{name} {attrs}>'.format(name=self.name, attrs=' '.join(self.render_attrs())) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
elif self.name and self.attrs: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
yield indent, '<{name} {attrs} />'.format(name=self.name, attrs=' '.join(self.render_attrs())) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
elif self.name and open: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
yield indent, '<{name}>'.format(name=self.name) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
elif self.name: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
yield indent, '<{name} />'.format(name=self.name) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
for item in self.contents: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
if isinstance(item, Tag): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
yield from item.render(indent=indent+1) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
elif self.whitespace_sensitive: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
yield 0, str(item) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
else: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
yield indent + 1, str(item) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
if self.name and open: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
yield indent, '</{name}>'.format(name=self.name) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
def __str__ (self): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
Render as HTML. |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
return '\n'.join('\t'*indent+line for indent, line in self.render(indent=0)) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
def __repr__ (self): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
return '{name}({args})'.format( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
name = self.__class__.__name__, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
args = ', '.join( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
[repr(self.name)] |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
+ [repr(item) for item in self.contents] |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
+ ['{name}={value!r}'.format(name=name, value=value) for name, value in self.attrs.items()] |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
class HTML: |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
pre = Tag('pre', _whitespace_sensitive=True) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
def __getattr__ (self, name): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
Get an empty Tag object. |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
return Tag(name) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
def __call__ (self, *values): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
Raw HTML. |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
return Tag(None, *values) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
class HTML5 (HTML): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
span = Tag('span', _selfclosing=False) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
104 |
script = Tag('script', _selfclosing=False) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
html5 = HTML5() |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
107 |
|
102 | 108 |
class HTMLMixin: |
92
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
A handler that renders a full HTML page. |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
111 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
113 |
# HTML5 |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
html = html5 |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
116 |
DOCTYPE = 'html' |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
117 |
HTML_XMLNS = None |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
118 |
HTML_LANG = 'en' |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
119 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
# <head> |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
121 |
TITLE = None |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
122 |
STYLE = None |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
123 |
SCRIPT = None |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
124 |
CSS = ( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
125 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
126 |
) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
127 |
JS = ( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
128 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
129 |
) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
130 |
HEAD = None |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
131 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
132 |
def title (self): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
133 |
return self.TITLE |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
134 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
135 |
def render (self): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
136 |
raise NotImplementedError() |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
137 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
138 |
def render_html (self) : |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
139 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
140 |
Render HTML <html> tag. |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
141 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
142 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
143 |
html = self.html |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
144 |
|
102 | 145 |
title = self.title() |
146 |
||
147 |
assert title |
|
148 |
||
92
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
149 |
return html.html( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
150 |
html.head( |
102 | 151 |
html.title(title), |
92
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
152 |
( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
153 |
html.link(rel='Stylesheet', type="text/css", href=src) for src in self.CSS |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
154 |
), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
155 |
( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
156 |
html.script(src=src, type='text/javascript', _selfclosing=False) for src in self.JS |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
157 |
), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
158 |
html.style(type='text/css')(self.STYLE) if self.STYLE else None, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
159 |
html.script(type='text/javascript')(self.SCRIPT) if self.SCRIPT else None, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
160 |
self.HEAD, |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
161 |
), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
162 |
html.body( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
163 |
self.render(), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
164 |
), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
165 |
xmlns=self.HTML_XMLNS, lang=self.HTML_LANG) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
166 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
167 |
def render_response (self): |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
168 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
169 |
Render entire HTML response. |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
170 |
""" |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
171 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
172 |
return """\ |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
173 |
<!DOCTYPE {doctype}> |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
174 |
{html}\ |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
175 |
""".format(doctype=self.DOCTYPE, html=self.render_html()) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
176 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
177 |
if __name__ == '__main__': |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
178 |
html = HTML5() |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
179 |
|
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
180 |
print(html.html( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
181 |
html.head( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
182 |
html.title("Testing") |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
183 |
), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
184 |
html.body( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
185 |
html.h1("Testing"), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
186 |
html.p("Just testing this..."), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
187 |
html("Raw HTML <tags>"), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
188 |
html.pre(repr( |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
189 |
html.a(href="/foo")("Foo!") |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
190 |
)) |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
191 |
), |
e5799432071c
qmsk.web: port pvl.web to python3, and rewrite html
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
192 |
)) |
102 | 193 |
|
194 |
class HTMLHandler (HTMLMixin, qmsk.web.application.Handler): |
|
195 |
pass |
|
196 |