Package ajango :: Package generator :: Module application
[hide private]
[frames] | no frames]

Source Code for Module ajango.generator.application

  1  ########################################################################### 
  2  #                                                                         # 
  3  #  Copyright (C) 2016  Rafal Kobel <rafyco1@gmail.com>                    # 
  4  #                                                                         # 
  5  #  This program is free software: you can redistribute it and/or modify   # 
  6  #  it under the terms of the GNU General Public License as published by   # 
  7  #  the Free Software Foundation, either version 3 of the License, or      # 
  8  #  (at your option) any later version.                                    # 
  9  #                                                                         # 
 10  #  This program is distributed in the hope that it will be useful,        # 
 11  #  but WITHOUT ANY WARRANTY; without even the implied warranty of         # 
 12  #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the           # 
 13  #  GNU General Public License for more details.                           # 
 14  #                                                                         # 
 15  #  You should have received a copy of the GNU General Public License      # 
 16  #  along with this program.  If not, see <http://www.gnu.org/licenses/>.  # 
 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   
33 -class Application(XMLReader):
34 """ Klasa zarzadzajaca aplikacjami. """
35 - def __init__(self, xmldoc, param=None):
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)
48 - def init(self):
49 """ Metoda inicjalizujaca. """ 50 self.xml_name = "APPLICATION" 51 self.add_permited(["VIEW"]) 52 self.managers['view'].set_menu(self.managers['menu'])
53 - def set_options(self, options):
54 """ Ustawienie opcji. """ 55 self.options = options
56 - def is_exist(self):
57 """ Sprawdzenie czy aplikacja juz istanieje. """ 58 return os.path.isdir(self.get_name())
59 # pylint: disable=W0142
60 - def make_new(self):
61 """ Wykonanie nowej aplikacji. """ 62 template_command = TemplateCommand() 63 options = self.options 64 template_command.validate_name(self.get_name(), 'app') 65 try: 66 os.mkdir(self.get_name()) 67 except OSError: 68 raise CommandError("Cannot create new application named %r." % 69 self.get_name()) 70 template_command.handle('app', 71 self.get_name(), 72 self.get_name(), 73 **options) 74 project_manager = ConfigGlobal().get('project_manager') 75 project_manager.add_application(self) 76 self.managers['database'].build_data_base(options)
77 - def get_name(self):
78 """ Pobranie nazwy. """ 79 return self.name
80 - def pre_render(self):
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)
110 - def execution(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)
118 - def get_url(self):
119 """ Zwraca link do plikow z aplikacja. """ 120 url = "./" + self.get_name() 121 return url
122 - def __str__(self):
123 return self.get_name()
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