Example #1
0
 def df_makeDynamicField(self,fb,tag=None,wdg_attr=None,data_type=None,fields=None,dbstore_kwargs=None,fieldPrefix=None,df_is_new=None,**kwargs):
     mask = wdg_attr.pop('field_mask',None)
     if tag.endswith('_nopopup'):
         tag = tag.replace('_nopopup','')
         wdg_attr['popup'] = False
     wdg_attr['tag'] =tag
     #wdg_attr['colspan'] = col_max if data_type == 'TL' else 1
     code = wdg_attr.get('code')
     description = wdg_attr.pop('description','')
     fieldPrefix = fieldPrefix or '.'
     wdg_attr['value']='^%s%s' %(fieldPrefix,code)
     if tag.lower() in ('checkbox' or 'radiobutton'):
         wdg_attr['label'] = description
     else:
         wdg_attr['lbl'] = description
     wdg_attr['ghost'] = wdg_attr.pop('field_placeholder',None)
     wdg_attr['tip'] = wdg_attr.pop('field_tip',None)
     wdg_attr['style'] = wdg_attr.pop('field_style',None)
     
     wdg_attr['format'] = wdg_attr.pop('field_format',None)
     wdg_attr['dtype'] = data_type
     wdg_attr['mask'] = mask
     wdg_attr['colspan'] = 1
     wdg_kwargs = wdg_attr.pop('wdg_kwargs',None)
     if wdg_kwargs:
         if isinstance(wdg_kwargs,basestring):
             wdg_kwargs = Bag(wdg_kwargs)
         wdg_kwargs = wdg_kwargs.asDict(ascii=True)
         wdg_attr.update(wdg_kwargs)
         for dim in ('height','width','crop_height','crop_width'):
             c = wdg_attr.pop(dim, None)
             if isinstance(c,int) or (c and c.isdigit()):
                 wdg_attr[dim] = '%spx' %c if c else None
             else:
                 wdg_attr[dim] = c
         wdg_attr['colspan'] = wdg_attr.pop('colspan',1) or 1
     if tag.lower()=='simpletextarea':
         wdg_attr.setdefault('speech',True)
         wdg_attr['width'] = wdg_attr.get('width') or '94%'
     customizer = getattr(self,'df_%(tag)s' %wdg_attr,None)
     if customizer:
         customizer(wdg_attr,dbstore_kwargs=dbstore_kwargs)
     dictExtract(wdg_attr,'source_',pop=True)
     self._df_handleFieldFormula(wdg_attr,fb=fb,fields=fields,**kwargs)
     self._df_handleFieldValidation(wdg_attr,fields=fields)
     code = wdg_attr.pop('code')
     getter = wdg_attr.pop('getter',None)
     default_value = wdg_attr.pop('default_value',None)
     if default_value is not None and df_is_new:
         print 'SET setting default for ',code
         fb.data('.%s' %code,default_value)
     wdg = self.df_child(fb,**wdg_attr)
     if not getter:
         return wdg     
     if isinstance(getter,basestring):
         getter = Bag(getter)
     if getter['table']:
         self._df_handleGetter(fb,code=code,getter=getter)
Example #2
0
    def df_makeDynamicField(self,
                            fb,
                            tag=None,
                            wdg_attr=None,
                            data_type=None,
                            fields=None,
                            dbstore_kwargs=None,
                            fieldPrefix=None,
                            df_is_new=None,
                            **kwargs):
        mask = wdg_attr.pop('field_mask', None)
        if tag.endswith('_nopopup'):
            tag = tag.replace('_nopopup', '')
            wdg_attr['popup'] = False
        wdg_attr['tag'] = tag
        #wdg_attr['colspan'] = col_max if data_type == 'TL' else 1
        code = wdg_attr.get('code')
        description = wdg_attr.pop('description', '')
        fieldPrefix = fieldPrefix or '.'
        wdg_attr['value'] = '^%s%s' % (fieldPrefix, code)
        if tag.lower() in ('checkbox' or 'radiobutton'):
            wdg_attr['label'] = description
        else:
            wdg_attr['lbl'] = description
        wdg_attr['ghost'] = wdg_attr.pop('field_placeholder', None)
        wdg_attr['tip'] = wdg_attr.pop('field_tip', None)
        wdg_attr['style'] = wdg_attr.pop('field_style', None)

        wdg_attr['format'] = wdg_attr.pop('field_format', None)
        wdg_attr['dtype'] = data_type
        wdg_attr['mask'] = mask
        wdg_attr['colspan'] = 1
        wdg_kwargs = wdg_attr.pop('wdg_kwargs', None)
        if wdg_kwargs:
            if isinstance(wdg_kwargs, basestring):
                wdg_kwargs = Bag(wdg_kwargs)
            wdg_kwargs = wdg_kwargs.asDict(ascii=True)
            wdg_attr.update(wdg_kwargs)
            for dim in ('height', 'width', 'crop_height', 'crop_width'):
                c = wdg_attr.pop(dim, None)
                if isinstance(c, int) or (c and c.isdigit()):
                    wdg_attr[dim] = '%spx' % c if c else None
                elif c is not None:
                    wdg_attr[dim] = c
            wdg_attr['colspan'] = wdg_attr.pop('colspan', 1) or 1
        if tag.lower() == 'simpletextarea':
            wdg_attr.setdefault('speech', True)
            wdg_attr['width'] = wdg_attr.get('width') or '94%'
        customizer = getattr(self, 'df_%(tag)s' % wdg_attr, None)
        if customizer:
            customizer(wdg_attr, dbstore_kwargs=dbstore_kwargs)
        dictExtract(wdg_attr, 'source_', pop=True)
        self._df_handleFieldFormula(wdg_attr, fb=fb, fields=fields, **kwargs)
        self._df_handleFieldValidation(wdg_attr, fields=fields)
        code = wdg_attr.pop('code')
        getter = wdg_attr.pop('getter', None)
        default_value = wdg_attr.pop('default_value', None)
        if default_value is not None and df_is_new:
            fb.data('.%s' % code,
                    self.catalog.fromText(default_value, data_type))
        wdg = self.df_child(fb, **wdg_attr)
        if not getter:
            return wdg
        if isinstance(getter, basestring):
            getter = Bag(getter)
        if getter['table']:
            self._df_handleGetter(fb, code=code, getter=getter)