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): |