350 return True |
350 return True |
351 |
351 |
352 def process_form_value(self, form): |
352 def process_form_value(self, form): |
353 """process posted form and return correctly typed value""" |
353 """process posted form and return correctly typed value""" |
354 try: |
354 try: |
355 return form.formvalues[self] |
355 return form.formvalues[(self, form)] |
356 except KeyError: |
356 except KeyError: |
357 value = form.formvalues[self] = self._process_form_value(form) |
357 value = form.formvalues[(self, form)] = self._process_form_value(form) |
358 return value |
358 return value |
359 |
359 |
360 def _process_form_value(self, form): |
360 def _process_form_value(self, form): |
361 widget = self.get_widget(form) |
361 widget = self.get_widget(form) |
362 value = widget.process_field_data(form, self) |
362 value = widget.process_field_data(form, self) |
598 if self.format(form) in self.editable_formats: |
598 if self.format(form) in self.editable_formats: |
599 data = self.typed_value(form, load_bytes=True) |
599 data = self.typed_value(form, load_bytes=True) |
600 if data: |
600 if data: |
601 encoding = self.encoding(form) |
601 encoding = self.encoding(form) |
602 try: |
602 try: |
603 form.formvalues[self] = unicode(data.getvalue(), encoding) |
603 form.formvalues[(self, form)] = unicode(data.getvalue(), encoding) |
604 except UnicodeError: |
604 except UnicodeError: |
605 pass |
605 pass |
606 else: |
606 else: |
607 if not self.required: |
607 if not self.required: |
608 msg = form._cw._( |
608 msg = form._cw._( |
818 for eid in value] |
818 for eid in value] |
819 # remove associated __linkto hidden fields |
819 # remove associated __linkto hidden fields |
820 for field in form.root_form.fields_by_name('__linkto'): |
820 for field in form.root_form.fields_by_name('__linkto'): |
821 if field.value in searchedvalues: |
821 if field.value in searchedvalues: |
822 form.root_form.remove_field(field) |
822 form.root_form.remove_field(field) |
823 form.formvalues[self] = value |
823 form.formvalues[(self, form)] = value |
824 |
824 |
825 def format_single_value(self, req, value): |
825 def format_single_value(self, req, value): |
826 return value |
826 return value |
827 |
827 |
828 def process_form_value(self, form): |
828 def process_form_value(self, form): |
829 """process posted form and return correctly typed value""" |
829 """process posted form and return correctly typed value""" |
830 try: |
830 try: |
831 return form.formvalues[self] |
831 return form.formvalues[(self, form)] |
832 except KeyError: |
832 except KeyError: |
833 value = self._process_form_value(form) |
833 value = self._process_form_value(form) |
834 # if value is None, there are some remaining pending fields, we'll |
834 # if value is None, there are some remaining pending fields, we'll |
835 # have to recompute this later -> don't cache in formvalues |
835 # have to recompute this later -> don't cache in formvalues |
836 if value is not None: |
836 if value is not None: |
837 form.formvalues[self] = value |
837 form.formvalues[(self, form)] = value |
838 return value |
838 return value |
839 |
839 |
840 def _process_form_value(self, form): |
840 def _process_form_value(self, form): |
841 """process posted form and return correctly typed value""" |
841 """process posted form and return correctly typed value""" |
842 widget = self.get_widget(form) |
842 widget = self.get_widget(form) |