1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 """ Modul zarzadzania aplikacjami. """
20
21 import os
22 import os.path
23 from django.core.management.base import CommandError
24 from django.core.management.templates import TemplateCommand
25 from ajango.generator.config_global import ConfigGlobal
26 from ajango.generator.views import view_factory
27 from ajango.core.XMLReader import XMLReader
28 from ajango.database.data_base_manager import DataBaseManager
29 from ajango.generator.view_manager import ViewManager
30 from ajango.generator.menu_manager import MenuManager
31 from ajango.generator.renderer import ImportRenderer
32
34 """ Klasa zarzadzajaca aplikacjami. """
36 self.views = []
37 self.managers = {}
38 self.main_view = None
39 self.imp_renderer = ImportRenderer()
40 self.options = None
41 self.managers['view'] = ViewManager()
42 self.managers['menu'] = MenuManager(self.managers['view'],
43 self.imp_renderer)
44 self.managers['database'] = DataBaseManager(self)
45 self.options = None
46 self.name = ""
47 XMLReader.__init__(self, xmldoc, param)
49 """ Metoda inicjalizujaca. """
50 self.xml_name = "APPLICATION"
51 self.add_permited(["VIEW"])
52 self.managers['view'].set_menu(self.managers['menu'])
54 """ Ustawienie opcji. """
55 self.options = options
57 """ Sprawdzenie czy aplikacja juz istanieje. """
58 return os.path.isdir(self.get_name())
59
78 """ Pobranie nazwy. """
79 return self.name
81 """ Czynnosci przed inicjalizacja. """
82 self.name = self.getAttribute('name').lower()
83 if self.name == '':
84 raise CommandError("Missing parametr name in application")
85 - def check(self, name, xmldoc_elem):
86 """ Oczytanie nodow wewnetrznych. """
87 if name == 'VIEW':
88 new_view = view_factory({'xmldoc' : xmldoc_elem,
89 'imp_renderer': self.imp_renderer,
90 'app': self})
91 for once in self.views:
92 if once.get_name() == new_view.get_name():
93 raise CommandError("Id %r is use by two or "
94 "more views in %r" %
95 (str(once), str(self)))
96 if new_view.getAttribute("main").lower() == "main":
97 if self.main_view != None:
98 raise CommandError("There are two or more views"
99 "sign as 'main' -> %r %r " %
100 (new_view.get_name(),
101 self.main_view.get_name()))
102 self.main_view = new_view
103 self.views.append(new_view)
104 - def post_renderer(self):
105 """ Czynnosci po inicjalizacji. """
106 if self.main_view == None:
107 self.main_view = self.views[0]
108 project = ConfigGlobal().get('project_manager')
109 project.add_main_view_url(self)
111 """
112 Wygenerowanie kodu wszystkich widokow i dodanie ich do Managera
113 widokow, ktory je wypisze.
114 """
115 for elem in self.views:
116 self.managers['view'].add(elem)
117 self.managers['view'].save_all(self)
119 """ Zwraca link do plikow z aplikacja. """
120 url = "./" + self.get_name()
121 return url
124 - def get_main_view(self):
125 """ Pobranie glownego widoku. """
126 if self.main_view == None:
127 try:
128 return self.views[0]
129 except IndexError:
130 return None
131 else:
132 return self.main_view
133