# HG changeset patch # User Sylvain Thénault # Date 1317298057 -7200 # Node ID 6cebeb1f386afdd71420a218b983e964096df21c # Parent 974a8653aedee3ece4b0c8e3ca9978229d09cbf3 [linkto] test for main form should be done in the link_to dictionary computation, else we may get erroneous values for sub-forms diff -r 974a8653aede -r 6cebeb1f386a web/views/forms.py --- a/web/views/forms.py Wed Sep 28 14:33:43 2011 +0200 +++ b/web/views/forms.py Thu Sep 29 14:07:37 2011 +0200 @@ -386,15 +386,12 @@ self.add_hidden('_cwmsgid', msgid) def add_linkto_hidden(self): - '''add the __linkto hidden field used to directly attach the new object + """add the __linkto hidden field used to directly attach the new object to an existing other one when the relation between those two is not already present in the form. - Warning: this method must be called only when all form fields are setup''' - # if current form is not the main form, exit immediately - try: - self.field_by_name('__maineid') - except form.FieldNotFound: - return + + Warning: this method must be called only when all form fields are setup + """ for (rtype, role), eids in self.linked_to.iteritems(): # if the relation is already setup by a form field, do not add it # in a __linkto hidden to avoid setting it twice in the controller @@ -411,6 +408,11 @@ @property @cached def linked_to(self): + # if current form is not the main form, exit immediately + try: + self.field_by_name('__maineid') + except form.FieldNotFound: + return {} linked_to = {} for linkto in self._cw.list_form_param('__linkto'): ltrtype, eid, ltrole = linkto.split(':')