diff -r 864ae7c15ef5 -r 7d1794175e40 web/form.py --- a/web/form.py Tue Apr 28 20:08:16 2009 +0200 +++ b/web/form.py Tue Apr 28 20:08:46 2009 +0200 @@ -30,28 +30,6 @@ http_cache_manager = NoHTTPCacheManager add_to_breadcrumbs = False - def __init__(self, req, rset, **kwargs): - super(FormViewMixIn, self).__init__(req, rset, **kwargs) - # get validation session data which may have been previously set. - # deleting validation errors here breaks form reloading (errors are - # no more available), they have to be deleted by application's publish - # method on successful commit - formurl = req.url() - forminfo = req.get_session_data(formurl) - if forminfo: - req.data['formvalues'] = forminfo['values'] - req.data['formerrors'] = errex = forminfo['errors'] - req.data['displayederrors'] = set() - # if some validation error occured on entity creation, we have to - # get the original variable name from its attributed eid - foreid = errex.entity - for var, eid in forminfo['eidmap'].items(): - if foreid == eid: - errex.eid = var - break - else: - errex.eid = foreid - def html_headers(self): """return a list of html headers (eg something to be inserted between and of the returned page @@ -80,22 +58,13 @@ self.req.set_page_data('rql_varmaker', varmaker) self.varmaker = varmaker - # XXX deprecated with new form system. Should disappear - - domid = 'entityForm' - category = 'form' - controller = 'edit' - http_cache_manager = NoHTTPCacheManager - add_to_breadcrumbs = False - def __init__(self, req, rset, **kwargs): super(FormMixIn, self).__init__(req, rset, **kwargs) # get validation session data which may have been previously set. # deleting validation errors here breaks form reloading (errors are # no more available), they have to be deleted by application's publish # method on successful commit - formurl = req.url() - forminfo = req.get_session_data(formurl) + forminfo = req.get_session_data(req.url()) if forminfo: req.data['formvalues'] = forminfo['values'] req.data['formerrors'] = errex = forminfo['errors'] @@ -110,6 +79,14 @@ else: errex.eid = foreid + # XXX deprecated with new form system. Should disappear + + domid = 'entityForm' + category = 'form' + controller = 'edit' + http_cache_manager = NoHTTPCacheManager + add_to_breadcrumbs = False + def html_headers(self): """return a list of html headers (eg something to be inserted between and of the returned page @@ -371,10 +348,11 @@ values found in 1. and 2. are expected te be already some 'display' value while those found in 3. and 4. are expected to be correctly typed. """ - if field.name in self._previous_values: - value = self._previous_values[field.name] - elif field.name in self.req.form: - value = self.req.form[field.name] + qname = self.form_field_name(field) + if qname in self._previous_values: + value = self._previous_values[qname] + elif qname in self.req.form: + value = self.req.form[qname] else: if field.name in rendervalues: value = rendervalues[field.name] @@ -449,6 +427,9 @@ self.form_add_hidden('__linkto', linkto) msg = '%s %s' % (msg, self.req._('and linked')) self.form_add_hidden('__message', msg) + # in case of direct instanciation + self.schema = self.edited_entity.schema + self.vreg = self.edited_entity.vreg def _errex_match_field(self, errex, field): """return true if the field has some error in given validation exception