[Checkins] SVN: zope.dublincore/branches/icemac-lp620353/s fixes LP #620353: registered meta data events for (object, event), too

Michael Howitz mh at gocept.com
Thu Aug 19 09:10:26 EDT 2010


Log message for revision 115800:
  fixes LP #620353: registered meta data events for (object, event), too
  

Changed:
  U   zope.dublincore/branches/icemac-lp620353/setup.py
  U   zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/configure.zcml
  U   zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/creatorannotator.py
  U   zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/test_creatorannotator.py
  U   zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/timeannotators.txt
  U   zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/timeannotators.py

-=-
Modified: zope.dublincore/branches/icemac-lp620353/setup.py
===================================================================
--- zope.dublincore/branches/icemac-lp620353/setup.py	2010-08-19 13:06:24 UTC (rev 115799)
+++ zope.dublincore/branches/icemac-lp620353/setup.py	2010-08-19 13:10:26 UTC (rev 115800)
@@ -24,7 +24,7 @@
 def read(*path):
     return open(os.path.join(*path)).read() + '\n\n'
 
-version = '3.7.1dev'
+version = '3.8.0dev'
 
 long_description = (
     '.. contents::\n\n' +
@@ -53,7 +53,7 @@
     namespace_packages=['zope'],
     include_package_data=True,
     extras_require=dict(
-        test=['zope.testing',
+        test=['zope.testing >= 3.8',
               'zope.annotation',
               ]
         ),

Modified: zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/configure.zcml
===================================================================
--- zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/configure.zcml	2010-08-19 13:06:24 UTC (rev 115799)
+++ zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/configure.zcml	2010-08-19 13:10:26 UTC (rev 115800)
@@ -8,15 +8,15 @@
   <include package="zope.component" file="meta.zcml" />
   <include package="zope.security" file="meta.zcml" />
 
-  <permission 
-      id="zope.dublincore.view" 
-      title="[zope.dublincore.view-permission] 
+  <permission
+      id="zope.dublincore.view"
+      title="[zope.dublincore.view-permission]
              View Dublin-Core Meta Data "
       />
 
-  <permission 
-      id="zope.dublincore.change" 
-      title="[zope.dublincore.change-permission] 
+  <permission
+      id="zope.dublincore.change"
+      title="[zope.dublincore.change-permission]
              Change Dublin-Core Meta Data "
       />
 
@@ -33,20 +33,40 @@
       handler=".timeannotators.ModifiedAnnotator"
       for="zope.lifecycleevent.interfaces.IObjectModifiedEvent"
       />
+  <subscriber
+      handler=".timeannotators.ModifiedAnnotator"
+      for="*
+           zope.lifecycleevent.interfaces.IObjectModifiedEvent"
+      />
 
   <subscriber
       handler=".timeannotators.CreatedAnnotator"
       for="zope.lifecycleevent.interfaces.IObjectCreatedEvent"
       />
+  <subscriber
+      handler=".timeannotators.CreatedAnnotator"
+      for="*
+           zope.lifecycleevent.interfaces.IObjectCreatedEvent"
+      />
 
   <subscriber
       handler=".creatorannotator.CreatorAnnotator"
       for="zope.lifecycleevent.interfaces.IObjectModifiedEvent"
       />
+  <subscriber
+      handler=".creatorannotator.CreatorAnnotator"
+      for="*
+           zope.lifecycleevent.interfaces.IObjectModifiedEvent"
+      />
 
   <subscriber
       handler=".creatorannotator.CreatorAnnotator"
       for="zope.lifecycleevent.interfaces.IObjectCreatedEvent"
       />
+  <subscriber
+      handler=".creatorannotator.CreatorAnnotator"
+      for="*
+           zope.lifecycleevent.interfaces.IObjectCreatedEvent"
+      />
 
 </configure>

Modified: zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/creatorannotator.py
===================================================================
--- zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/creatorannotator.py	2010-08-19 13:06:24 UTC (rev 115799)
+++ zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/creatorannotator.py	2010-08-19 13:10:26 UTC (rev 115800)
@@ -19,9 +19,12 @@
 from zope.security.management import queryInteraction
 from zope.security.proxy import removeSecurityProxy
 
-def CreatorAnnotator(event):
+def CreatorAnnotator(object, event=None):
     """Update Dublin-Core creator property"""
-    dc = IZopeDublinCore(event.object, None)
+    if event is None:
+        # annotator was only called the event as only argument
+        object = object.object
+    dc = IZopeDublinCore(object, None)
     # Principals that can create objects do not necessarily have
     # 'zope.app.dublincore.change' permission.
     # https://bugs.launchpad.net/zope3/+bug/98124

Modified: zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/test_creatorannotator.py
===================================================================
--- zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/test_creatorannotator.py	2010-08-19 13:06:24 UTC (rev 115799)
+++ zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/test_creatorannotator.py	2010-08-19 13:10:26 UTC (rev 115800)
@@ -106,6 +106,14 @@
         self._callFUT(event)
         self.assertEqual(context.creators, ('bharney', 'phred',))
 
+
+class CreatorAnnotatorObjectEventTests(CreatorAnnotatorTests):
+
+    def _callFUT(self, event):
+        from zope.dublincore.creatorannotator import CreatorAnnotator
+        return CreatorAnnotator(event.object, event)
+
+
 class DummyDCAdapter(object):
 
     def _getcreator(self):
@@ -123,9 +131,3 @@
     def __init__(self, principal):
         self.principal = principal
         self.interaction = None
-
-
-def test_suite():
-    return unittest.TestSuite((
-            unittest.makeSuite(CreatorAnnotatorTests),
-        ))

Modified: zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/timeannotators.txt
===================================================================
--- zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/timeannotators.txt	2010-08-19 13:06:24 UTC (rev 115799)
+++ zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/tests/timeannotators.txt	2010-08-19 13:10:26 UTC (rev 115800)
@@ -12,7 +12,7 @@
 ...     modified = None
 
 The annotations are stored on the ``IZopeDublinCore`` adapter. This dummy adapter
-reads and writes from/to the context object. 
+reads and writes from/to the context object.
 
 >>> import zope.component
 >>> import zope.dublincore.interfaces
@@ -55,6 +55,25 @@
 >>> content.modified
 datetime.datetime(<DATETIME>, tzinfo=<UTC>)
 
+The created annotator can also be registered for (object, event):
+
+>>> zope.component.provideHandler(
+...     zope.dublincore.timeannotators.CreatedAnnotator,
+...     (None,
+...      zope.lifecycleevent.interfaces.IObjectCreatedEvent,))
+>>> content = Content()
+>>> ignored = zope.component.subscribers(
+...    (content, zope.lifecycleevent.ObjectCreatedEvent(content)), None)
+
+Both ``created`` and ``modified`` get set this way, too:
+
+>>> content.created
+datetime.datetime(<DATETIME>, tzinfo=<UTC>)
+>>> content.modified
+datetime.datetime(<DATETIME>, tzinfo=<UTC>)
+
+
+
 Modified annotator
 ==================
 
@@ -76,5 +95,20 @@
 >>> content.modified
 datetime.datetime(<DATETIME>, tzinfo=<UTC>)
 
+The modified annotator can also be registered for (object, event):
 
+>>> zope.component.provideHandler(
+...     zope.dublincore.timeannotators.ModifiedAnnotator,
+...     (None,
+...      zope.lifecycleevent.interfaces.IObjectModifiedEvent,))
 
+>>> content = Content()
+>>> ignored = zope.component.subscribers(
+...    (content, zope.lifecycleevent.ObjectModifiedEvent(content)), None)
+
+``modified`` gets set, this way, too:
+
+>>> print content.created
+None
+>>> content.modified
+datetime.datetime(<DATETIME>, tzinfo=<UTC>)

Modified: zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/timeannotators.py
===================================================================
--- zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/timeannotators.py	2010-08-19 13:06:24 UTC (rev 115799)
+++ zope.dublincore/branches/icemac-lp620353/src/zope/dublincore/timeannotators.py	2010-08-19 13:10:26 UTC (rev 115800)
@@ -21,8 +21,11 @@
 from zope.security.proxy import removeSecurityProxy
 
 
-def ModifiedAnnotator(event):
-    dc = IZopeDublinCore(event.object, None)
+def ModifiedAnnotator(object, event=None):
+    if event is None:
+        # annotator was only called the event as only argument
+        object = object.object
+    dc = IZopeDublinCore(object, None)
     if dc is not None:
         # Principals that can modify objects do not necessary have permissions
         # to arbitrarily modify DC data, see issue 373
@@ -30,8 +33,11 @@
         dc.modified = datetime.now(pytz.utc)
 
 
-def CreatedAnnotator(event):
-    dc = IZopeDublinCore(event.object, None)
+def CreatedAnnotator(object, event=None):
+    if event is None:
+        # annotator was only called the event as only argument
+        object = object.object
+    dc = IZopeDublinCore(object, None)
     if dc is not None:
         # Principals that can create objects do not necessary have permissions
         # to arbitrarily modify DC data, see issue 373



More information about the checkins mailing list