19 # import interfaces |
19 # import interfaces |
20 from pyams_form.interfaces.form import IFormLayer, IForm, IAJAXForm, IInnerSubForm, IInnerTabForm, \ |
20 from pyams_form.interfaces.form import IFormLayer, IForm, IAJAXForm, IInnerSubForm, IInnerTabForm, \ |
21 ICustomUpdateSubForm, IFormCreatedEvent, FormCreatedEvent, IInnerForm, IFormContextPermissionChecker |
21 ICustomUpdateSubForm, IFormCreatedEvent, FormCreatedEvent, IInnerForm, IFormContextPermissionChecker |
22 from pyams_form.interfaces.form import IAddFormButtons, IModalAddFormButtons, IEditFormButtons, \ |
22 from pyams_form.interfaces.form import IAddFormButtons, IModalAddFormButtons, IEditFormButtons, \ |
23 IModalEditFormButtons, IModalDisplayFormButtons |
23 IModalEditFormButtons, IModalDisplayFormButtons |
|
24 from pyams_form.interfaces import get_form_weight |
24 from pyams_form.interfaces.form import FormObjectCreatedEvent, FormObjectModifiedEvent |
25 from pyams_form.interfaces.form import FormObjectCreatedEvent, FormObjectModifiedEvent |
25 from pyams_i18n.interfaces import II18n |
26 from pyams_i18n.interfaces import II18n |
26 from pyams_skin.interfaces import IDialog, ISkinnable, IContentTitle |
27 from pyams_skin.interfaces import IDialog, ISkinnable, IContentTitle |
27 from pyams_template.interfaces import IContentTemplate, ILayoutTemplate |
28 from pyams_template.interfaces import IContentTemplate, ILayoutTemplate |
28 from pyramid_chameleon.interfaces import IChameleonTranslate |
29 from pyramid_chameleon.interfaces import IChameleonTranslate |
48 from zope.lifecycleevent import Attributes, ObjectCreatedEvent |
49 from zope.lifecycleevent import Attributes, ObjectCreatedEvent |
49 from zope.location import locate |
50 from zope.location import locate |
50 from zope.schema.fieldproperty import FieldProperty |
51 from zope.schema.fieldproperty import FieldProperty |
51 |
52 |
52 from pyams_form import _ |
53 from pyams_form import _ |
53 |
|
54 |
|
55 def get_form_weight(form): |
|
56 """Try to get form weight attribute""" |
|
57 try: |
|
58 return form.weight |
|
59 except AttributeError: |
|
60 return 0 |
|
61 |
54 |
62 |
55 |
63 REDIRECT_STATUS_CODES = (300, 301, 302, 303, 304, 305, 307) |
56 REDIRECT_STATUS_CODES = (300, 301, 302, 303, 304, 305, 307) |
64 |
57 |
65 |
58 |
175 result.extend(form.widgets.errors) |
168 result.extend(form.widgets.errors) |
176 return result |
169 return result |
177 |
170 |
178 def update_content(self, content, data): |
171 def update_content(self, content, data): |
179 changes = applyChanges(self, content, data) |
172 changes = applyChanges(self, content, data) |
180 for subform in self.subforms + self.tabforms: |
173 subforms = self.subforms + self.tabforms |
181 if ICustomUpdateSubForm.providedBy(subform): |
174 [subforms.extend(group.subforms) for group in self.groups] |
182 updates = ICustomUpdateSubForm(subform).update_content(content, data) |
175 for subform in subforms: |
|
176 subform_update = ICustomUpdateSubForm(subform, None) |
|
177 if subform_update is not None: |
|
178 updates = subform_update.update_content(content, data) |
183 if isinstance(updates, dict): |
179 if isinstance(updates, dict): |
184 changes.update(updates) |
180 changes.update(updates) |
185 else: |
181 else: |
186 changes.update(applyChanges(subform, content, data)) |
182 changes.update(applyChanges(subform, content, data)) |
187 return changes |
183 return changes |