788 return value |
788 return value |
789 |
789 |
790 def process_form_value(self, form): |
790 def process_form_value(self, form): |
791 """process posted form and return correctly typed value""" |
791 """process posted form and return correctly typed value""" |
792 widget = self.get_widget(form) |
792 widget = self.get_widget(form) |
793 value = widget.process_field_data(form, self) |
793 values = widget.process_field_data(form, self) |
794 if value is None: |
794 if values is None: |
795 return () |
795 values = () |
796 elif not isinstance(value, list): |
796 elif not isinstance(values, list): |
797 return (value,) |
797 values = (values,) |
798 return value |
798 eids = set() |
|
799 for eid in values: |
|
800 if not eid: # AutoCompletionWidget XXX deal with this in the widget |
|
801 continue |
|
802 typed_eid = form.actual_eid(eid) |
|
803 if typed_eid is None: |
|
804 form._cw.data['pendingfields'].append( (form, self) ) |
|
805 return None |
|
806 eids.add(typed_eid) |
|
807 return eids |
|
808 |
799 |
809 |
800 class CompoundField(Field): |
810 class CompoundField(Field): |
801 def __init__(self, fields, *args, **kwargs): |
811 def __init__(self, fields, *args, **kwargs): |
802 super(CompoundField, self).__init__(*args, **kwargs) |
812 super(CompoundField, self).__init__(*args, **kwargs) |
803 self.fields = fields |
813 self.fields = fields |