1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 """
20 Obiekt generujacy kontener stron.
21
22 Obiekt generuje kod obsugujacy strone agregujaca widoki.
23
24 Dostepne znaczniki
25 ==================
26
27 1. B{LAYOUT} - Opcja okreslajaca sposob agregacji stron.
28 - I{name} - Przyjmuje wartosc I{horizontal} lub I{vertical} (domyslnie).
29 2. B{VIEW} - widok agregujacy L{wiecej <ajango.generator.views>}.
30
31 Generowany obiekt
32 =================
33
34 L{ajango.site.sites.container}
35 """
36
37 from ajango.generator.views import ViewBase
38 from ajango.generator.views import view_factory
39 from ajango.generator.config_global import ConfigGlobal
40
41 -class View(ViewBase):
42 """ Klasa widoku kontenerowego. """
43 - def __init__(self, xmldoc, importRenderer, app):
48 """ Metoda inicjalizujaca. """
49 self.type = "container"
50 self.add_permited(["VIEW", "LAYOUT"])
51 - def check(self, name, xmldoc_elem):
52 """ Oczytanie nodow wewnetrznych. """
53 if ViewBase.check(self, name, xmldoc_elem):
54 return True
55 if name.upper() == "LAYOUT":
56 self.layout = xmldoc_elem.getAttribute('name')
57 if self.layout != 'horizontal' and self.layout != 'vertical':
58 raise ValueError("there are unknown layout %r" %
59 self.layout)
60 return True
61 if name.upper() == "VIEW":
62 view = view_factory({'xmldoc' : xmldoc_elem,
63 'imp_renderer' : self.renderer,
64 'app' : self.app})
65 self.views.append(view)
66 return True
67 return False
68 - def execute(self, view, view_name="view"):
69 """ Budowanie kodu i wypelnianie renderera."""
70 for elem in self.views:
71 id_elem = ConfigGlobal().get('view_id_counter')
72 ConfigGlobal().set('view_id_counter', id_elem + 1)
73 elem.make_view_execute("view_%d" % id_elem)
74 self.add_line("%s.add_view(view_%d)" % (view_name, id_elem))
75 self.add_line("%s.set_container_layout(%r)" % (view_name, self.layout))
76