web/formfields.py
branchstable
changeset 5085 981e85b14b47
parent 5057 d1bd50ae0edd
child 5155 1dea6e0fdfc1
child 5220 42f854b6083d
equal deleted inserted replaced
5084:d8f491cb046c 5085:981e85b14b47
   865                 form._cw.data['pendingfields'].add( (form, self) )
   865                 form._cw.data['pendingfields'].add( (form, self) )
   866                 return None
   866                 return None
   867             eids.add(typed_eid)
   867             eids.add(typed_eid)
   868         return eids
   868         return eids
   869 
   869 
   870 
   870 # XXX use cases where we don't actually want a better widget?
   871 class CompoundField(Field):
   871 class CompoundField(Field):
   872     def __init__(self, fields, *args, **kwargs):
   872     def __init__(self, fields, *args, **kwargs):
   873         super(CompoundField, self).__init__(*args, **kwargs)
   873         super(CompoundField, self).__init__(*args, **kwargs)
   874         self.fields = fields
   874         self.fields = fields
   875 
   875 
   876     def subfields(self, form):
   876     def subfields(self, form):
   877         return self.fields
   877         return self.fields
   878 
   878 
   879     def actual_fields(self, form):
   879     def actual_fields(self, form):
   880         return [self] + list(self.fields)
   880         # don't add [self] to actual fields, compound field is usually kinda
       
   881         # virtual, all interesting values are in subfield. Skipping it may avoid
       
   882         # error when processed by the editcontroller : it may be marked as required
       
   883         # while it has no value, hence generating a false error.
       
   884         return list(self.fields)
   881 
   885 
   882 
   886 
   883 _AFF_KWARGS = uicfg.autoform_field_kwargs
   887 _AFF_KWARGS = uicfg.autoform_field_kwargs
   884 
   888 
   885 def guess_field(eschema, rschema, role='subject', skip_meta_attr=True, **kwargs):
   889 def guess_field(eschema, rschema, role='subject', skip_meta_attr=True, **kwargs):