[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py - added successMessage, noChangesMessage and applyChanges (similar to those in z3c.form)

Yvo Schubbe y.2009 at wcm-solutions.de
Mon Aug 31 15:58:17 EDT 2009


Log message for revision 103424:
  - added successMessage, noChangesMessage and applyChanges (similar to those in z3c.form)
  - refactored _handle_success

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py	2009-08-31 19:14:06 UTC (rev 103423)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py	2009-08-31 19:58:16 UTC (rev 103424)
@@ -224,11 +224,27 @@
         obj_type = translate(self.context.Type(), self.context)
         return _(u'Edit ${obj_type}', mapping={'obj_type': obj_type})
 
+    @property
+    def successMessage(self):
+        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`` is a dictionary; if empty, there were no changes
+        if changes:
+            content.reindexObject()
+        return changes
+
     def _handle_success(self, action, data):
         # normalize set and datetime
         for k, v in data.iteritems():
@@ -236,16 +252,12 @@
                 data[k] = set(v)
             elif isinstance(v, datetime) and v.tzname() is None:
                 data[k] = parseDatetimetz(str(v))
-        changed = form.applyChanges(self.context, self.form_fields, data,
-                                    self.adapters)
-        if changed:
-            self.context.reindexObject()
-            obj_type = translate(self.context.Type(), self.context)
-            self.status = _(u'${obj_type} changed.',
-                            mapping={'obj_type': obj_type})
+        changes = self.applyChanges(data)
+        if changes:
+            self.status = self.successMessage
         else:
-            self.status = _(u'Nothing to change.')
-        return changed
+            self.status = self.noChangesMessage
+        return changes
 
     def handle_change_success(self, action, data):
         self._handle_success(action, data)



More information about the checkins mailing list