# HG changeset patch # User Sylvain Thénault # Date 1259309730 -3600 # Node ID be05eeeb2db1359b894d30ad8ac00cdf82a65d32 # Parent 69020a7c234a25b9a004cc86a595b23a3afb74c9 fix previous post values handling (eg on validation error) for sub-forms diff -r 69020a7c234a -r be05eeeb2db1 web/form.py --- a/web/form.py Fri Nov 27 09:14:31 2009 +0100 +++ b/web/form.py Fri Nov 27 09:15:30 2009 +0100 @@ -48,10 +48,6 @@ """return the key that may be used to store / retreive data about a previous post which failed because of a validation error """ - - def __init__(self, req, rset, **kwargs): - super(FormMixIn, self).__init__(req, rset, **kwargs) - self.restore_previous_post(self.session_key()) try: return self.force_session_key except AttributeError: @@ -65,8 +61,8 @@ forminfo = self.req.get_session_data(sessionkey, pop=True) if forminfo: # XXX remove req.data assigment once cw.web.widget is killed - self.req.data['formvalues'] = self.form_previous_values = forminfo['values'] - self.req.data['formerrors'] = self.form_valerror = forminfo['errors'] + self.req.data['formvalues'] = self._form_previous_values = forminfo['values'] + self.req.data['formerrors'] = self._form_valerror = forminfo['errors'] self.req.data['displayederrors'] = self.form_displayed_errors = set() # if some validation error occured on entity creation, we have to # get the original variable name from its attributed eid @@ -78,8 +74,20 @@ else: self.form_valerror.eid = foreid else: - self.form_previous_values = {} - self.form_valerror = None + self._form_previous_values = {} + self._form_valerror = None + + @property + def form_previous_values(self): + if self.parent_form is None: + return self._form_previous_values + return self.parent_form.form_previous_values + + @property + def form_valerror(self): + if self.parent_form is None: + return self._form_valerror + return self.parent_form.form_valerror # XXX deprecated with new form system. Should disappear diff -r 69020a7c234a -r be05eeeb2db1 web/views/forms.py --- a/web/views/forms.py Fri Nov 27 09:14:31 2009 +0100 +++ b/web/views/forms.py Fri Nov 27 09:15:30 2009 +0100 @@ -89,6 +89,8 @@ if mainform: self.form_add_hidden('__errorurl', self.session_key()) self.form_add_hidden('__domid', self.domid) + self.restore_previous_post(self.session_key()) + # XXX why do we need two different variables (mainform and copy_nav_params ?) if self.copy_nav_params: for param in NAV_FORM_PARAMETERS: