[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