merge
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Fri, 05 Jun 2009 10:26:35 +0200
changeset 2051 e4d24e4d74e6
parent 2050 ce184fdb1e56 (diff)
parent 2047 6ab574aa5e5f (current diff)
child 2052 0b9b0bdc93f5
child 2057 0a0cbccafcb5
merge
web/views/cwproperties.py
web/views/management.py
--- a/web/views/basecontrollers.py	Fri Jun 05 09:58:16 2009 +0200
+++ b/web/views/basecontrollers.py	Fri Jun 05 10:26:35 2009 +0200
@@ -211,9 +211,11 @@
                 status, args = (False, '???')
         self.req.set_content_type('text/html')
         jsarg = simplejson.dumps( (status, args) )
+        domid = self.req.form.get('__domid', 'entityForm').encode(
+            self.req.encoding)
         return """<script type="text/javascript">
- window.parent.handleFormValidationResponse('entityForm', null, null, %s);
-</script>""" %  simplejson.dumps( (status, args) )
+ window.parent.handleFormValidationResponse('%s', null, null, %s);
+</script>""" %  (domid, simplejson.dumps( (status, args) ))
 
     def validation_error(self, err):
         self.req.cnx.rollback()
--- a/web/views/cwproperties.py	Fri Jun 05 09:58:16 2009 +0200
+++ b/web/views/cwproperties.py	Fri Jun 05 10:26:35 2009 +0200
@@ -212,7 +212,7 @@
         else:
             label = key
         subform = self.vreg.select_object('forms', 'base', self.req, entity=entity,
-                                     set_error_url=False)
+                                     mainform=False)
         subform.append_field(PropertyValueField(name='value', label=label,
                                                 eidparam=True))
         subform.vreg = self.vreg
--- a/web/views/editforms.py	Fri Jun 05 09:58:16 2009 +0200
+++ b/web/views/editforms.py	Fri Jun 05 10:26:35 2009 +0200
@@ -71,7 +71,7 @@
                 continue
             done.add(entity.eid)
             subform = self.vreg.select_object('forms', 'base', req, entity=entity,
-                                              set_error_url=False)
+                                              mainform=False)
             form.form_add_subform(subform)
             # don't use outofcontext view or any other that may contain inline edition form
             w(u'<li>%s</li>' % tags.a(entity.view('textoutofcontext'),
@@ -119,7 +119,6 @@
         else:
             form = self._build_relation_form(entity, value, rtype, role,
                                              row, col, vid, default)
-        form.form_add_hidden(u'__maineid', entity.eid)
         renderer = self.vreg.select_object('formrenderers', 'base', self.req,
                                       entity=entity,
                                       display_label=False, display_help=False,
@@ -194,7 +193,7 @@
 
     def init_form(self, form, entity):
         """customize your form before rendering here"""
-        form.form_add_hidden(u'__maineid', entity.eid)
+        pass
 
     def form_title(self, entity):
         """the form view title"""
@@ -307,7 +306,7 @@
         for row in xrange(len(self.rset)):
             form = self.vreg.select_object('forms', 'edition', self.req, self.rset,
                                            row=row, attrcategories=('primary',),
-                                           set_error_url=False)
+                                           mainform=False)
             # XXX rely on the EntityCompositeFormRenderer to put the eid input
             form.remove_field(form.field_by_name('eid'))
             self.form_add_subform(form)
@@ -356,8 +355,7 @@
         """fetch and render the form"""
         form = self.vreg.select_object('forms', 'edition', self.req, None,
                                        entity=entity, form_renderer_id='inline',
-                                       set_error_url=False,
-                                       copy_nav_params=False)
+                                       mainform=False, copy_nav_params=False)
         self.add_hiddens(form, entity, peid, rtype, role)
         divid = '%s-%s-%s' % (peid, rtype, entity.eid)
         title = self.schema.rschema(rtype).display_name(self.req, role)
--- a/web/views/forms.py	Fri Jun 05 09:58:16 2009 +0200
+++ b/web/views/forms.py	Fri Jun 05 10:26:35 2009 +0200
@@ -36,12 +36,12 @@
     cssstyle = None
     cwtarget = None
     redirect_path = None
-    set_error_url = True
     copy_nav_params = False
     form_buttons = None # form buttons (button widgets instances)
     form_renderer_id = 'default'
 
-    def __init__(self, req, rset=None, row=None, col=None, submitmsg=None,
+    def __init__(self, req, rset=None, row=None, col=None,
+                 submitmsg=None, mainform=True,
                  **kwargs):
         super(FieldsForm, self).__init__(req, rset, row=row, col=col)
         self.fields = list(self.__class__._fields_)
@@ -51,8 +51,9 @@
             else:
                 assert hasattr(self.__class__, key) and not key[0] == '_', key
                 setattr(self, key, val)
-        if self.set_error_url:
+        if mainform:
             self.form_add_hidden('__errorurl', self.session_key())
+            self.form_add_hidden('__domid', self.domid)
         if self.copy_nav_params:
             for param in NAV_FORM_PARAMETERS:
                 if not param in kwargs:
@@ -266,13 +267,18 @@
             self.edited_entity = self.complete_entity(self.row or 0, self.col or 0)
         self.form_add_hidden('__type', eidparam=True)
         self.form_add_hidden('eid')
+        if kwargs.get('mainform'):
+            self.form_add_hidden(u'__maineid', self.edited_entity.eid)
+            # If we need to directly attach the new object to another one
+            if self.req.list_form_param('__linkto'):
+                for linkto in self.req.list_form_param('__linkto'):
+                    self.form_add_hidden('__linkto', linkto)
+                if msg:
+                    msg = '%s %s' % (msg, self.req._('and linked'))
+                else:
+                    msg = self.req._('entity linked')
         if msg:
-            # If we need to directly attach the new object to another one
             self.form_add_hidden('__message', msg)
-        if not self.is_subform:
-            for linkto in self.req.list_form_param('__linkto'):
-                self.form_add_hidden('__linkto', linkto)
-                msg = '%s %s' % (msg, self.req._('and linked'))
 
     def _field_has_error(self, field):
         """return true if the field has some error in given validation exception
--- a/web/views/management.py	Fri Jun 05 09:58:16 2009 +0200
+++ b/web/views/management.py	Fri Jun 05 10:26:35 2009 +0200
@@ -244,7 +244,8 @@
         submiturl = self.config['submit-url']
         submitmail = self.config['submit-mail']
         if submiturl or submitmail:
-            form = self.select_object('forms', 'base', self.req, set_error_url=False)
+            form = self.select_object('forms', 'base', self.req,
+                                      mainform=False)
             binfo = text_error_description(ex, excinfo, req, eversion, cversions)
             form.form_add_hidden('description', binfo)
             form.form_add_hidden('__bugreporting', '1')