web/formfields.py
branchstable
changeset 4661 87672c718c3c
parent 4658 25de2eb0432b
child 4871 a34b76593ab2
equal deleted inserted replaced
4660:21ed77792c33 4661:87672c718c3c
   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)