38 lines
1.4 KiB
Python
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'
|