Move and fix reindex_brain_metadata_on_basetask subscriber

This commit is contained in:
Cédric Messiant 2013-07-11 16:58:00 +02:00
parent 4b33f10eb1
commit 134bfb2287
2 changed files with 20 additions and 18 deletions

View File

@ -1,11 +1,10 @@
from Acquisition import aq_parent
from five import grok
from plone import api
from plone.indexer.decorator import indexer
from Products.CMFCore.utils import getToolByName
from zope.lifecycleevent.interfaces import IObjectModifiedEvent
from zope.container.contained import ContainerModifiedEvent
from collective.dms.basecontent.dmsdocument import IDmsDocument
from collective.task.interfaces import IBaseTask
@ -18,6 +17,7 @@ def get_document(obj):
return obj
return parent
@indexer(IBaseTask)
def enquirer(obj, **kw):
return obj.enquirer and obj.enquirer[0] or ''
@ -43,17 +43,3 @@ def document_path(obj, **kw):
def document_title(obj, **kw):
doc = get_document(obj)
return doc.Title()
@grok.subscribe(IDmsDocument, IObjectModifiedEvent)
def reindex_brain_metadata_on_basetask(doc, event):
if isinstance(event, ContainerModifiedEvent):
return
catalog = getToolByName(doc, 'portal_catalog')
tasks = catalog.unrestrictedSearchResults({
'object_provides': IBaseTask.__identifier__,
'path': '/'.join(doc.getPhysicalPath())})
for b in tasks:
# reindex id index just to trigger the update of metadata on brain
b.getObject().reindexObject(idxs=['id'])

View File

@ -1,7 +1,8 @@
from five import grok
from zope.lifecycleevent.interfaces import IObjectRemovedEvent,\
IObjectAddedEvent
IObjectAddedEvent, IObjectModifiedEvent
from zope.container.contained import ContainerModifiedEvent
from plone import api
from Products.DCWorkflow.interfaces import IAfterTransitionEvent
@ -13,6 +14,7 @@ from collective.task.content.task import ITask
from collective.task.content.opinion import IOpinion
from collective.task.content.validation import IValidation
from collective.task.interfaces import IBaseTask
from collective.dms.basecontent.dmsdocument import IDmsDocument
def grant_local_role_to_responsible(context, role, target):
@ -77,3 +79,17 @@ def set_contributor_on_document(context, event):
"""
document = context.getParentNode()
grant_local_role_to_responsible(context, 'Contributor', document)
@grok.subscribe(IDmsDocument, IObjectModifiedEvent)
def reindex_brain_metadata_on_basetask(doc, event):
if isinstance(event, ContainerModifiedEvent):
return
catalog = api.portal.get_tool('portal_catalog')
tasks = catalog.unrestrictedSearchResults({
'object_provides': IBaseTask.__identifier__,
'path': '/'.join(doc.getPhysicalPath())})
for b in tasks:
# reindex id index just to trigger the update of metadata on brain
b._unrestrictedGetObject().reindexObject(idxs=['id'])