def __init__(self, template_name, jqgrid=None, model=None, module_name=None, form=None): self.template_name = template_name self.jqgrid = jqgrid self.model = model self.module_name = module_name if form == None: form = GenericForm(model) self.form = form.create_form() else: self.form = form
def develop_build(): from uliweb.utils.common import pkg import uliweb.core.SimpleFrame as sf app_apps = sf.get_apps(application.apps_dir) contrib_path = pkg.resource_filename('uliweb.contrib', '') apps_dirs = [(application.apps_dir, ''), (contrib_path, 'uliweb.contrib')] #using entry point to find installed apps try: from pkg_resources import iter_entry_points except: iter_entry_points = None if iter_entry_points: #process apps group for p in iter_entry_points('uliweb_apps'): apps_dirs.append((os.path.join(p.dist.location, p.module_name), p.module_name)) catalogs, apps = get_apps(application, apps_dirs, app_apps) if iter_entry_points: #proces single app for p in iter_entry_points('uliweb_app'): _get_app(os.path.join(p.dist.location, p.module_name), p.module_name, apps, catalogs, app_apps) from forms import GenericForm f = GenericForm(method="post") if request.method == 'GET': # ini = Ini(os.path.join(application.apps_dir, 'settings.ini')) ini_to_form(f, application.settings) else: r = f.validate(request.params) if r: ini = Ini(os.path.join(application.apps_dir, 'settings.ini')) flag = form_to_ini(f, ini, application.settings) if flag: ini.save() return {'catalogs': catalogs, 'generic_form': f}
def develop_build(): from uliweb.utils.common import pkg import uliweb.core.SimpleFrame as sf app_apps = sf.get_apps(application.apps_dir) contrib_path = pkg.resource_filename('uliweb.contrib', '') apps_dirs = [(application.apps_dir, ''), (contrib_path, 'uliweb.contrib')] #using entry point to find installed apps try: from pkg_resources import iter_entry_points except: iter_entry_points = None if iter_entry_points: #process apps group for p in iter_entry_points('uliweb_apps'): apps_dirs.append((os.path.join(p.dist.location, p.module_name), p.module_name)) catalogs, apps = get_apps(application, apps_dirs, app_apps) if iter_entry_points: #proces single app for p in iter_entry_points('uliweb_app'): _get_app(os.path.join(p.dist.location, p.module_name), p.module_name, apps, catalogs, app_apps) from forms import GenericForm f = GenericForm(method="post") if request.method == 'GET': # ini = Ini(os.path.join(application.apps_dir, 'settings.ini')) ini_to_form(f, application.settings) else: r = f.validate(request.params) if r: ini = Ini(os.path.join(application.apps_dir, 'settings.ini')) flag = form_to_ini(f, ini, application.settings) if flag: ini.save() return {'catalogs':catalogs, 'generic_form':f}
def __init__(self, parent, **kwargs): wx.Panel.__init__ (self, parent, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) self.tablename = kwargs.get ( "tablename", None) self.table = kwargs.get ( "table", None) self.form = kwargs.get ( "form", None ) if self.tablename: self.table = meta.Table.Get ( self.tablename ) if self.table: self.tablename = self.table.name self.form = orm.Form ( self.table ) if self.form: self.table = self.form.table self.tablename = self.table.name self.save = conditionalmethod ( self.form.save ) self.reload = conditionalmethod ( self.form.revert ) self.new = conditionalmethod ( self.new ) self.delete = conditionalmethod (self.form.delete ) self.on_toolbar_SAVE = self.save self.on_toolbar_NEW = self.new self.on_toolbar_RELOAD = self.reload self.on_toolbar_DEL = self.delete self.mainsizer = wx.BoxSizer (wx.VERTICAL) self.toolbarconfig = kwargs.get ( "toolbar", FormToolbar) #tool bar if self.toolbarconfig: self.toolbar = self.toolbarconfig(self, **kwargs) self.mainsizer.Add ( self.toolbar, flag=wx.EXPAND ) else: self.toolbar = None self.status = wx.StaticText ( self ) self.status.SetFont ( wx.Font ( 8, wx.FONTFAMILY_MAX, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD ) ) self.status.ForegroundColour = (122,66,66) self.status.SetThemeEnabled (False ) self.mainsizer.Add ( self.status, flag=wx.EXPAND | wx.ALL, border=5 ) #editor self.editor_scrolled_window = wx.ScrolledWindow ( self, style=wx.VSCROLL | wx.TAB_TRAVERSAL ) self.editor = GenericForm ( self.form, self.editor_scrolled_window ) self.editor.create_widget() self.scrolledsizer = wx.BoxSizer() self.scrolledsizer.Add ( self.editor, flag=wx.EXPAND ) self.editor_scrolled_window.SetSizer ( self.scrolledsizer ) self.editor_scrolled_window.SetScrollbars(20,20,50,50) self.mainsizer.Add ( self.editor_scrolled_window, 1, flag=wx.EXPAND ) #navigator navigator_config = kwargs.get ( "navigator", Navigator ) navigator_options = kwargs.get ( "navigatoroptions", {} ) if navigator_config: navigator = navigator_config(self, **navigator_options) self.recordlist = orm.RecordList (self.form.table).reload() navigator.set_records ( self.recordlist ) navigator.first() self.mainsizer.Add ( navigator, flag=wx.EXPAND ) else: navigator = None self.SetSizer ( self.mainsizer ) self.SetSize ( parent.GetSize() ) #handlers self.editor_scrolled_window.Bind ( wx.EVT_SIZE, self.on_resize) self.editor.Bind ( wx.EVT_SIZE, self.on_editor_resize ) if navigator: self.set_navigator ( navigator ) self.form.listenForEvent ( "request_record_change", self.before_record_change ) self.form.listenForEvent ( "current_record_modified", self.current_record_modified ) self.form.listenForEvent ( "current_record_deleted", self.current_record_deleted ) self.form.listenForEvent ( "current_record_saved", self.current_record_saved ) self.form.listenForEvent ( "data_loaded", self.data_loaded ) self.infowindow = InfoPopup(self)
class CompleteGenericForm(wx.Panel): def __init__(self, parent, **kwargs): wx.Panel.__init__ (self, parent, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) self.tablename = kwargs.get ( "tablename", None) self.table = kwargs.get ( "table", None) self.form = kwargs.get ( "form", None ) if self.tablename: self.table = meta.Table.Get ( self.tablename ) if self.table: self.tablename = self.table.name self.form = orm.Form ( self.table ) if self.form: self.table = self.form.table self.tablename = self.table.name self.save = conditionalmethod ( self.form.save ) self.reload = conditionalmethod ( self.form.revert ) self.new = conditionalmethod ( self.new ) self.delete = conditionalmethod (self.form.delete ) self.on_toolbar_SAVE = self.save self.on_toolbar_NEW = self.new self.on_toolbar_RELOAD = self.reload self.on_toolbar_DEL = self.delete self.mainsizer = wx.BoxSizer (wx.VERTICAL) self.toolbarconfig = kwargs.get ( "toolbar", FormToolbar) #tool bar if self.toolbarconfig: self.toolbar = self.toolbarconfig(self, **kwargs) self.mainsizer.Add ( self.toolbar, flag=wx.EXPAND ) else: self.toolbar = None self.status = wx.StaticText ( self ) self.status.SetFont ( wx.Font ( 8, wx.FONTFAMILY_MAX, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD ) ) self.status.ForegroundColour = (122,66,66) self.status.SetThemeEnabled (False ) self.mainsizer.Add ( self.status, flag=wx.EXPAND | wx.ALL, border=5 ) #editor self.editor_scrolled_window = wx.ScrolledWindow ( self, style=wx.VSCROLL | wx.TAB_TRAVERSAL ) self.editor = GenericForm ( self.form, self.editor_scrolled_window ) self.editor.create_widget() self.scrolledsizer = wx.BoxSizer() self.scrolledsizer.Add ( self.editor, flag=wx.EXPAND ) self.editor_scrolled_window.SetSizer ( self.scrolledsizer ) self.editor_scrolled_window.SetScrollbars(20,20,50,50) self.mainsizer.Add ( self.editor_scrolled_window, 1, flag=wx.EXPAND ) #navigator navigator_config = kwargs.get ( "navigator", Navigator ) navigator_options = kwargs.get ( "navigatoroptions", {} ) if navigator_config: navigator = navigator_config(self, **navigator_options) self.recordlist = orm.RecordList (self.form.table).reload() navigator.set_records ( self.recordlist ) navigator.first() self.mainsizer.Add ( navigator, flag=wx.EXPAND ) else: navigator = None self.SetSizer ( self.mainsizer ) self.SetSize ( parent.GetSize() ) #handlers self.editor_scrolled_window.Bind ( wx.EVT_SIZE, self.on_resize) self.editor.Bind ( wx.EVT_SIZE, self.on_editor_resize ) if navigator: self.set_navigator ( navigator ) self.form.listenForEvent ( "request_record_change", self.before_record_change ) self.form.listenForEvent ( "current_record_modified", self.current_record_modified ) self.form.listenForEvent ( "current_record_deleted", self.current_record_deleted ) self.form.listenForEvent ( "current_record_saved", self.current_record_saved ) self.form.listenForEvent ( "data_loaded", self.data_loaded ) self.infowindow = InfoPopup(self) def current_record_modified(self, record, *args): self.status.SetLabel ( "wprowadzono zmiany do danych" ) def current_record_deleted ( self, objectid, *args): self.status.SetLabel ( "Rekord usunięty." ) wx.CallLater ( 2000, lambda self=self: self.status.SetLabel ( "" ) ) self.navigator.reload(-1) def current_record_saved ( self, record, wasnew, *args): self.status.SetLabel ( "Rekord zapisany." ) wx.CallLater ( 2000, lambda self=self: self.status.SetLabel ( "" ) ) if record.objectid not in self.navigator.records: #This is possible if the record was saved in an event handler of an event #fired, when some parent form was navigated away this records parent. #In this case it is not necessary nor possible to reload the just-saved #record. return if wasnew: if self.navigator: self.navigator.reload(record.objectid) elif self.navigator: self.navigator.records.reloadsingle ( record.objectid ) def data_loaded (self, record, *args): wx.CallLater ( 1000, lambda self=self: self.status.SetLabel ( "" ) ) def before_record_change(self, record, newid): if record._ismodified: ask = wx.MessageBox ( "W aktualnym rekordzie są niezapisane dane, czy chcesz je zapisać?", "Uwaga!", wx.YES_NO | wx.CANCEL ) if ask == wx.YES: self.save() elif ask == wx.NO: return else: raise eventcancelled() def on_editor_resize(self, event, *args): self.editor_scrolled_window.SetVirtualSize ( event.GetSize() ) event.Skip() def on_resize(self, event, *args): w, h = self.editor_scrolled_window.GetSize() ew, eh = self.editor.GetSize() self.editor.SetMinSize ( ( w-20, eh ) ) self.editor_scrolled_window.SetVirtualSize ( (ew, eh) ) event.Skip() def navigate (self, objectid): if self.navigator and self.navigator.isonnew() and self.toolbar: self.toolbar.SetRecordLabel ( self.form.table.title + " : ** NEW RECORD ** " ) else: self.form.setid ( objectid ) if self.toolbar: self.toolbar.SetRecordLabel ( self.form.table.title + " : " + str(self.form.current) ) def set_navigator(self, navigator): self.navigator = navigator self.navigator.listenForEvent ( "navigate", self.navigate ) self.navigate ( self.navigator.currentid() ) def new(self): self.form.new() ##FIXME: ugly 'NEW_RECORD' hack! self.navigator.navigate ( None )