[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - added SettingsEditFormBase
Yvo Schubbe
y.2011 at wcm-solutions.de
Mon Feb 21 06:19:30 EST 2011
Log message for revision 120490:
- added SettingsEditFormBase
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2011-02-21 10:59:54 UTC (rev 120489)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2011-02-21 11:19:30 UTC (rev 120490)
@@ -4,6 +4,9 @@
2.3.0-alpha (unreleased)
------------------------
+- browser views: Added SettingsEditFormBase.
+ This can be used for edit forms for global settings.
+
- Require at least Zope 2.13.4.
- profiles and upgrade: Added support for using the new OFS UserFolder class.
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2011-02-21 10:59:54 UTC (rev 120489)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2011-02-21 11:19:30 UTC (rev 120490)
@@ -82,6 +82,51 @@
pass
+class SettingsEditFormBase(_EditFormMixin, PageForm):
+
+ """Base class for editing global settings.
+ """
+
+ actions = form.Actions(
+ form.Action(
+ name='change',
+ label=_(u'Change'),
+ success='handle_change_success',
+ failure='handle_failure'))
+
+ description = u''
+ successMessage = _(u"Settings changed.")
+ noChangesMessage = _(u'Nothing to change.')
+
+ def getContent(self):
+ return self.context
+
+ def setUpWidgets(self, ignore_request=False):
+ self.adapters = {}
+ self.widgets = form.setUpEditWidgets(
+ self.form_fields, self.prefix, self.getContent(), self.request,
+ adapters=self.adapters, ignore_request=ignore_request
+ )
+
+ def applyChanges(self, data):
+ return form.applyData(self.getContent(), self.form_fields, data)
+
+ def _handle_success(self, action, data):
+ # normalize set and datetime
+ for k, v in data.iteritems():
+ if isinstance(v, Set):
+ data[k] = set(v)
+ elif isinstance(v, datetime) and v.tzinfo:
+ # DatetimeWidget returns offset-aware datetime objects
+ data[k] = v.replace(tzinfo=None)
+ changes = self.applyChanges(data)
+ if changes:
+ self.status = self.successMessage
+ else:
+ self.status = self.noChangesMessage
+ return changes
+
+
class ContentAddFormBase(_EditFormMixin, PageAddForm):
adapts(IFolderish, ICMFDefaultSkin, ITypeInformation)
@@ -205,7 +250,7 @@
return obj
-class ContentEditFormBase(_EditFormMixin, PageForm):
+class ContentEditFormBase(SettingsEditFormBase):
actions = form.Actions(
form.Action(
@@ -221,15 +266,6 @@
success='handle_change_and_view_success',
failure='handle_failure'))
- description = u''
-
- def setUpWidgets(self, ignore_request=False):
- self.adapters = {}
- self.widgets = form.setUpEditWidgets(
- self.form_fields, self.prefix, self.context, self.request,
- adapters=self.adapters, ignore_request=ignore_request
- )
-
@property
def label(self):
obj_type = translate(self.context.Type(), self.context)
@@ -240,37 +276,18 @@
obj_type = translate(self.context.Type(), self.context)
return _(u'${obj_type} changed.', mapping={'obj_type': obj_type})
- noChangesMessage = _(u'Nothing to change.')
-
def handle_validate(self, action, data):
if self.context.wl_isLocked():
return (_(u'This resource is locked via webDAV.'),)
return None
def applyChanges(self, data):
- content = self.context
- changes = form.applyData(content, self.form_fields, data,
- self.adapters)
+ changes = super(ContentEditFormBase, self).applyChanges(data)
# ``changes`` is a dictionary; if empty, there were no changes
if changes:
- content.reindexObject()
+ self.getContent().reindexObject()
return changes
- def _handle_success(self, action, data):
- # normalize set and datetime
- for k, v in data.iteritems():
- if isinstance(v, Set):
- data[k] = set(v)
- elif isinstance(v, datetime) and v.tzinfo:
- # DatetimeWidget returns offset-aware datetime objects
- data[k] = v.replace(tzinfo=None)
- changes = self.applyChanges(data)
- if changes:
- self.status = self.successMessage
- else:
- self.status = self.noChangesMessage
- return changes
-
def handle_change_success(self, action, data):
self._handle_success(action, data)
return self._setRedirect('portal_types', 'object/edit')
More information about the checkins
mailing list