This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
pfwbged.collection/src/pfwbged/collection/multiactions.py

38 lines
1.4 KiB
Python

from Products.Five.browser import BrowserView
from pfwbged.collection import _
from plone import api
from plone.api.exc import InvalidParameterError
from zope.i18n import translate
class MultiActionsView(BrowserView):
def __call__(self):
action = self.request.form['action'] # ex: process_without_comment
documents = self.request.form['documents[]']
if isinstance(documents, basestring):
documents = [documents]
failures = []
for document_id in documents:
document = api.content.get(document_id)
try:
api.content.transition(document, action)
except InvalidParameterError:
failures.append(document)
else:
document.reindexObject(idxs=['review_state'])
if action == 'to_process' and document.portal_type == 'dmsincomingmail':
from pfwbged.policy.subscribers.mail import incoming_mail_attributed
incoming_mail_attributed(document, u'')
if failures:
self.request.response.setStatus(403)
header = translate(
_(u'You don\'t have the right to change the state of these objects:'),
context=self.request
)
return u'{}\n{}'.format(
header,
u'\n'.join(['- {}'.format(failure.Title()) for failure in failures]),
)
else:
return 'OK'