Add set_reader_on_versions subscriber : add Reader role to opinion enquirer on all versions created by the Opinion responsible when the Opinion is returned

This commit is contained in:
Cédric Messiant 2013-07-12 09:42:51 +02:00
parent 134bfb2287
commit 9a432255a8
1 changed files with 17 additions and 0 deletions

View File

@ -93,3 +93,20 @@ def reindex_brain_metadata_on_basetask(doc, event):
for b in tasks:
# reindex id index just to trigger the update of metadata on brain
b._unrestrictedGetObject().reindexObject(idxs=['id'])
@grok.subscribe(IOpinion, IAfterTransitionEvent)
def set_reader_on_versions(context, event):
if event.new_state.id == 'done':
responsible = context.responsible[0]
enquirer = context.enquirer[0]
container_path = '/'.join(context.getParentNode().getPhysicalPath())
query = {'path': {'query' : container_path},
'portal_type': 'dmsmainfile',
'Creator': responsible}
catalog = api.portal.get_tool('portal_catalog')
versions = catalog.searchResults(query)
for brain in versions:
version = brain.getObject()
version.manage_addLocalRoles(enquirer, ['Reader'])
version.reindexObject()