replace content_object.reindexObject() with event handlers.

svn path=/plone.app.discussion/trunk/; revision=27814
This commit is contained in:
Timo Stollenwerk 2009-07-04 16:18:48 +00:00
parent 2031ec67cf
commit e2934a66b1
3 changed files with 22 additions and 12 deletions

View File

@ -4,7 +4,7 @@ from datetime import datetime
from zope.interface import implements from zope.interface import implements
from zope.component.factory import Factory from zope.component.factory import Factory
from Acquisition import Implicit from Acquisition import aq_parent, Implicit
from OFS.Traversable import Traversable from OFS.Traversable import Traversable
from AccessControl.Role import RoleManager from AccessControl.Role import RoleManager
from AccessControl.Owned import Owned from AccessControl.Owned import Owned
@ -98,4 +98,10 @@ def notify_workflow(obj, event):
""" """
tool = getToolByName(obj, 'portal_workflow', None) tool = getToolByName(obj, 'portal_workflow', None)
if tool is not None: if tool is not None:
tool.notifyCreated(obj) tool.notifyCreated(obj)
def notify_content_object(obj, event):
"""Tell the content object when a comment is added
"""
content_obj = aq_parent(aq_parent(obj))
content_obj.reindexObject(idxs=('total_comments', 'last_comment_date', 'commentators',))

View File

@ -47,6 +47,18 @@
handler=".comment.notify_workflow" handler=".comment.notify_workflow"
/> />
<subscriber
for="plone.app.discussion.interfaces.IComment
zope.app.container.contained.IObjectAddedEvent"
handler=".comment.notify_content_object"
/>
<subscriber
for="plone.app.discussion.interfaces.IComment
zope.app.container.contained.IObjectRemovedEvent"
handler=".comment.notify_content_object"
/>
<subscriber <subscriber
for="plone.app.discussion.interfaces.IComment for="plone.app.discussion.interfaces.IComment
zope.app.container.contained.IObjectAddedEvent" zope.app.container.contained.IObjectAddedEvent"
@ -59,13 +71,13 @@
handler=".tool.unindex_object" handler=".tool.unindex_object"
/> />
<!-- conversation indexes --> <!-- Conversation indexes -->
<adapter name="total_comments" factory=".catalog.total_comments" /> <adapter name="total_comments" factory=".catalog.total_comments" />
<adapter name="last_comment_date" factory=".catalog.last_comment_date" /> <adapter name="last_comment_date" factory=".catalog.last_comment_date" />
<adapter name="commentators" factory=".catalog.commentators" /> <adapter name="commentators" factory=".catalog.commentators" />
<adapter name="in_response_to" factory=".catalog.in_response_to" /> <adapter name="in_response_to" factory=".catalog.in_response_to" />
<!-- comment indexes --> <!-- Comment indexes -->
<adapter name="Title" factory=".catalog.title" /> <adapter name="Title" factory=".catalog.title" />
<adapter name="Creator" factory=".catalog.creator" /> <adapter name="Creator" factory=".catalog.creator" />
<adapter name="Description" factory=".catalog.description" /> <adapter name="Description" factory=".catalog.description" />

View File

@ -255,10 +255,6 @@ class Conversation(Traversable, Persistent, Explicit):
notify(ObjectAddedEvent(comment.__of__(self), self, id)) notify(ObjectAddedEvent(comment.__of__(self), self, id))
notify(ContainerModifiedEvent(self)) notify(ContainerModifiedEvent(self))
# XXX: This shouldn't be necessary.
content_obj = aq_parent(self)
content_obj.reindexObject()
return id return id
# Dict API # Dict API
@ -317,10 +313,6 @@ class Conversation(Traversable, Persistent, Explicit):
if not suppress_container_modified: if not suppress_container_modified:
notify(ContainerModifiedEvent(self)) notify(ContainerModifiedEvent(self))
# XXX: This shouldn't be necessary.
content_obj = aq_parent(self)
content_obj.reindexObject()
def __iter__(self): def __iter__(self):
return iter(self._comments) return iter(self._comments)