Example #1
0
 def main(self, root, **kwargs):
     root.data('tree.data', self.treedata())
     root.h1('A simple tree')
     root.tree(storepath='tree.data')
     root.h1('See the attributes with shift mouseover')
     #root.tree(storepath='tree.data',inspect='shift')
     root.tree(storepath='pages', hideValues=True, inspect='shift')
     root.data('pages', Bag(dict(root=DirectoryResolver('/'))))
Example #2
0
    def get_items(self, items, child_name=None, **kwargs):
        result = Bag()
        for key, item in items.items():

            _customClasses = []
            item['_pkey'] = key
            if item['last_refresh_age'] > 60:
                _customClasses.append('disconnected')
            elif item['last_event_age'] > 60:
                _customClasses.append('inactive')
            if child_name and not item[child_name]:
                _customClasses.append('no_children')
            item.pop('datachanges', None)
            result.setItem(key,
                           Bag(item),
                           _customClasses=' '.join(_customClasses))
        return result
Example #3
0
 def test_01_tree_res(self, pane):
     """
     tree resolver
     """
     pane.tree(storepath='.geodata', labelAttribute='nome', hideValues=True)
     geodata = Bag()
     geodata.addItem('italia', ResolverGeo(_page=self), nome='Italia')
     pane.data('.geodata', geodata)
Example #4
0
 def te_menuTemplates(self, table=None):
     result = Bag()
     from_userobject = self.db.table('adm.userobject').userObjectMenu(
         table, 'template')  #todo
     for n in from_userobject:
         result.setItem(n.label, None, tplmode='userobject', **n.attr)
     result.setItem('__newtpl__', None, caption='!!New Template')
     return result
Example #5
0
def getGnrConfig(config_path=None, set_environment=False):
    config_path = config_path or gnrConfigPath()
    if not config_path or not os.path.isdir(config_path):
        raise Exception('Missing genro configuration')
    gnr_config = Bag(config_path)
    if set_environment:
        setEnvironment(gnr_config)
    return gnr_config
Example #6
0
 def test_1_context_creation(self, pane):
     """Context creation """
     center = self.common_pages_container(pane, height='350px', background='whitesmoke',
                                          datapath='test')
     fb = center.formbuilder(cols=1, border_spacing='3px', fld_width='8em', datapath='bar.mycontext')
     center.defineContext('context_foo', 'bar.mycontext', value=Bag(dict(egg='spam')), savesession=True)
     fb.textbox(value='^.egg', lbl='Context value')
     fb.textbox(value='^.egg?attribute_1', lbl='Context attr')
Example #7
0
    def test_setItem_addItem(self):
        b = Bag()
        b['name'] = 'John'
        b['surname'] = 'Doe'
        b['birthday'] = datetime.date(1974, 11, 23)
        b['phone'] = Bag()
        b['phone'].setItem('office', 555450210)
        b.setItem('phone.home', 555345670, private=True)
        b.setItem('phone.mobile',
                  555230450,
                  sim='vadophone',
                  fbplayer='gattuso')
        b.addItem('phone.mobile', 444230450,
                  sim='tom')  #add is used for multiple keys
        #b.toXml('data/testbag.xml')

        assert b == self.mybag
Example #8
0
 def writeError(self,description=None,error_type=None,user=None,user_ip=None,user_agent=None,**kwargs):
     error_data = Bag(self.db.currentEnv)
     error_data.update(kwargs)
     rec = dict(description=description,error_data=error_data,username=user,user_ip=user_ip,user_agent=user_agent,error_type=error_type or 'ERR')
     with self.db.tempEnv(connectionName='system',storename=self.db.rootstore):
         self.insert(rec)
         self.db.commit()
     return rec
Example #9
0
 def griddata(self):
     result=Bag()
     result.setItem('r1',None,code='CA',caption='California')
     result.setItem('r2',None,code='IL',caption='Illinois',disabled=True)
     result.setItem('r3',None,code='NY',caption='New York',checked='^.checked')
     result.setItem('r4',None,code='TX',caption='Texas',disabled='^.disabled')
     result.setItem('r5',None,code='AL',caption='Alabama')
     return result
Example #10
0
 def create_instance(self, code):
     instanceconfig = Bag(self.pkg.instance_template())
     instanceconfig.setAttr('hosted', instance=code)
     instanceconfig.setAttr('db', dbname=code)
     base_path = os.path.dirname(self.pkg.instance_folder(code))
     im = InstanceMaker(code, base_path=base_path, config=instanceconfig)
     im.do()
     return im.instance_path
Example #11
0
def build_instanceconfig_xml(path=None):
    instanceconfig_bag = Bag()
    instanceconfig_bag.setItem('packages',None)
    instanceconfig_bag.setItem('authentication.xml_auth',None, dict(defaultTags='user,xml'))
    password = get_random_password(size=6)
    instanceconfig_bag.setItem('authentication.xml_auth.admin',None, dict(pwd=password, tags='_DEV_,admin,user'))
    print "Default password for user admin is %s, you can change it by editing %s" %(password, path)
    instanceconfig_bag.toXml(path,typevalue=False,pretty=True)
Example #12
0
 def rpc_handle_anwsers(self, answers=None):
     answers = Bag(answers or '')
     for page_id, page_answers in answers.items():
         with self.clientPage(page_id) as clientPage:
             for value, changepath in page_answers.digest(
                     '#v,#a.client_path'):
                 clientPage.set(changepath, value)
                 print 'HEY SETTO IN CLIENTPAGE'
Example #13
0
 def rpc_gridData(self):
     result = Bag()
     date = datetime.date.today()
     for i in range(100):
         pkey = 'r_%i' % i
         result[pkey] = Bag({
             '_pkey': pkey,
             'filter': 'A',
             'language': 'Python',
             'language_id': '6c75RL4uPJiMu5oEcfrx1w',
             'name': 'Dsc %i' % i,
             'qt': None,
             'new': bool(i % 2),
             'size': 'big',
             'date': date + datetime.timedelta(i)
         })
     return result
Example #14
0
 def rpc_get_subscribed_tables(self):
     l = self.site.register_page.get_index(index_name='*')
     result = Bag()
     for i, elem in enumerate(l):
         print elem
         result.setItem('r_%i' % i, None, label=elem)
     print result
     return result
Example #15
0
 def getSessionData(self, page_id):
     data = self.session.get(page_id)
     if data is None:
         data = Bag()
         self.session[page_id] = data
     else:
         data.restoreFromPicklable()
     return data
Example #16
0
 def diskDirectory(self):
     pages = Bag(self.site.sitemap['showcase'])
     for k in pages.keys():
         if hasattr(pages[k], '_htraverse'):
             pages[k].sort()
         #print pages
     #self.setPath(pages)
     return pages
Example #17
0
 def maintenance_update_data(self, exclude_guest=None,**kwargs):
     result = Bag()
     result['users'] = self._maintenance_get_items(self.site.register.users(), 'connections',exclude_guest=exclude_guest)
     connections = self.site.register.connections()
     result['connections'] = self._maintenance_get_items(connections, 'pages')
     pages = self.site.register.pages()
     result['pages'] = self._maintenance_get_items(pages,exclude_guest=exclude_guest)
     return result
Example #18
0
 def rootPage(self, *args, **kwargs):
     kwargs = kwargs or {}
     args = args or tuple()
     return Bag({
         'page_id': self.page_id,
         'connection_id': self.connection_id,
         'user': self.user
     }).toXml()
Example #19
0
 def importXmlData(self, path):
     """Populates a database from an XML file
     
     :param path: the file path"""
     data = Bag(path)
     for table, pkg in data.digest('#k,#a.pkg'):
         for n in data[table]:
             self.table(table, pkg=pkg).insertOrUpdate(n.attr)
Example #20
0
 def rpc_getLoadedFiles(self, uploadPath=None, **kwargs):
     path = self.site.getStaticPath(uploadPath)
     result = Bag()
     b = DirectoryResolver(path)
     for i, n in enumerate(
             [(t[1], t[2]) for t in b.digest('#a.file_ext,#a.file_name,#a.abs_path') if t[0] == 'xls']):
         result.setItem('r_%i' % i, None, filename=n[0], filepath=n[1])
     return result
Example #21
0
 def test_setItemPos(self):
     b = Bag({'a': 1, 'b': 2, 'c': 3, 'd': 4})
     b.setItem('e', 5, _position='<')
     assert b['#0'] == 5
     b.setItem('f', 6, _position='<c')
     assert b['#2'] == 6
     b.setItem('g', 7, _position='<#3')
     assert b['#3'] == 7
Example #22
0
 def getMailTemplate(self, tpl, locale):
     localelang = locale.split('-')[0]
     tplfile = self.getResource(
         os.path.join('mail_templates', localelang, tpl))
     if not tplfile:
         tplfile = self.getResource(os.path.join('mail_templates', tpl))
     if tplfile:
         return Bag(tplfile)
Example #23
0
 def importTable(self, tbl):
     if len(tbl) > 23:
         tbl = tbl[:23]
     cmdpath = os.path.join(self.folderdialog4d, 'exp_%s.xml' % tbl)
     b = Bag()
     b['command'] = 'Export4dTables'
     b['t4d.tbl'] = tbl
     b.toXml(cmdpath)
Example #24
0
 def tableData_states(self):
     mytable = Bag()
     mytable.setItem('r1', None, id='CA', caption='California')
     mytable.setItem('r2', None, id='IL', caption='Illinois')
     mytable.setItem('r3', None, id='NY', caption='New York')
     mytable.setItem('r4', None, id='TX', caption='Texas')
     mytable.setItem('r5', None, id='AL', caption='Alabama')
     return mytable
Example #25
0
 def list_users(self):
     usersDict = self._page.site.register.users()
     result = Bag()
     for user, item_user in usersDict.items():
         item = Bag()
         data = item_user.pop('data', None)
         item_user.pop('datachanges', None)
         item_user.pop('datachanges_idx', None)
         item_user.pop('connections')
         item['info'] = Bag([('%s:%s' % (k, str(v).replace('.', '_')), v)
                             for k, v in item_user.items()])
         item['data'] = data
         item.setItem('connections',
                      PagesTreeResolver(user=user),
                      cacheTime=3)
         result.setItem(user, item, user=user)
     return result
Example #26
0
    def load(self, path):
        """Loads the structure from an XML file

        :param path: path of the file to load"""
        cls = self.__class__
        b = Bag()
        b.fromXml(path, bagcls=cls, empty=cls)
        self[''] = self.merge(b)
Example #27
0
 def rpc_update_data(self, **kwargs):
     result = Bag()
     result['users'] = self.get_items(self.site.register.users(), 'connections')
     connections = self.site.register.connections()
     result['connections'] = self.get_items(connections, 'pages')
     pages = self.site.register.pages()
     result['pages'] = self.get_items(pages)
     return result
Example #28
0
 def commandMenu(self):
     b=Bag()
     b.setItem('make', None, action='genro.mypane.updateContent()')
     b.setItem('crea', None)
     b.setItem('-', None)
     b.setItem('trasforma.basso', None, caption=u'GiĆ¹', dir='d')
     b.setItem('trasforma.alto', None, caption='Su', dir='u')
     return b
Example #29
0
    def df_previewForm(self, frame, mastertable=None):
        bar = frame.top.slotToolbar('parentStackButtons,*,tplmenu,3')
        menuslot = bar.tplmenu.div()
        menuslot.div('^#FORM.dynamicFormTester.tplToShow',
                     _class='floatingPopup',
                     font_size='.9em',
                     font_weight='bold',
                     color='#555',
                     cursor='pointer',
                     padding='2px',
                     rounded=4)
        menuslot.menu(
            _class='smallmenu',
            values='^#FORM.dynamicFormTester.menuvalues',
            modifiers='*',
            action='SET #FORM.dynamicFormTester.tplToShow = $1.label')
        menuslot.dataFormula(
            "#FORM.dynamicFormTester.menuvalues",
            """'auto,'+custom_templates.keys().join(",");""",
            custom_templates='^#FORM.record.df_custom_templates',
            _if='custom_templates && custom_templates.len()',
            _else='"auto"',
            _delay=1)
        menuslot.dataFormula("#FORM.dynamicFormTester.tplToShow",
                             "'auto'",
                             _fired='^#FORM.record.loaded')

        bc = frame.center.borderContainer()
        bc.contentPane(region='right',
                       width='40%',
                       splitter=True,
                       padding='15px',
                       background='#eee').div(
                           innerHTML='^#FORM.dynamicFormTester.tplRendered',
                           background='white',
                           shadow='3px 3px 6px gray',
                           padding='4px',
                           rounded=4)
        bc.data('#FORM.dynamicFormTester.data', Bag())
        bc.dataFormula(
            "#FORM.dynamicFormTester.tplRendered",
            "tplToShow=='auto'?currdata.getFormattedValue():dataTemplate(custom_templates.getItem(tplToShow+'.tpl'),currdata);",
            custom_templates='^#FORM.record.df_custom_templates',
            currdata='^#FORM.dynamicFormTester.data',
            tplToShow='^#FORM.dynamicFormTester.tplToShow',
            _delay=100,
            _if='tplToShow')
        bc.dataController("currdata.clear();",
                          _fired='^#FORM.pkey',
                          currdata='=#FORM.dynamicFormTester.data')

        bc.contentPane(region='center').dynamicFieldsTestPane(
            df_table=mastertable,
            df_pkey='^#FORM.pkey',
            _fired='^#FORM.dynamicFormTester._refresh_fields',
            datapath='#FORM.dynamicFormTester.data',
            _if='showpreview',
            showpreview='^#FORM.dynamicFormTester.showpreview')
Example #30
0
 def getTestData2(self):
     result = Bag()
     result.setItem('r_0',None,nome='Mario Rossi',eta=30,peso=80,altezza=190,
                                  chart_backgroundColor='red')
     result.setItem('r_1',None,nome='Luigi Bianchi',eta=38,peso=90,altezza=180,
                                 chart_backgroundColor='green')
     result.setItem('r_2',None,nome='Rossella Albini',eta=22,peso=60,altezza=170,
                                 chart_backgroundColor='navy')
     return result