Add multi-action to create links #32829
This commit is contained in:
parent
3987ec9e82
commit
c555b03dec
|
@ -0,0 +1,60 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from Products.Five.browser import BrowserView
|
||||
from collective.task import _
|
||||
from collective.taskqueue import taskqueue
|
||||
from plone import api
|
||||
from plone.dexterity.browser.add import DefaultAddForm
|
||||
from plone.dexterity.utils import createContentInContainer
|
||||
from z3c.form import button
|
||||
from z3c.relationfield.relation import RelationValue
|
||||
from zope.component import getUtility
|
||||
from zope.intid import IIntIds
|
||||
|
||||
|
||||
class BackgroundAddLinkView(BrowserView):
|
||||
def __call__(self):
|
||||
base_document = self.context
|
||||
folder_path = self.request.form['folder']
|
||||
portal = api.portal.get()
|
||||
folder = portal.restrictedTraverse(folder_path)
|
||||
intids = getUtility(IIntIds)
|
||||
relation = RelationValue(to_id=intids.getId(folder))
|
||||
|
||||
new_link = createContentInContainer(
|
||||
base_document,
|
||||
'pfwbgedlink',
|
||||
folder=relation,
|
||||
)
|
||||
|
||||
|
||||
class AddLinks(DefaultAddForm):
|
||||
"Add multiple pfwbgedlinks"
|
||||
|
||||
portal_type = "pfwbgedlink"
|
||||
|
||||
@property
|
||||
def label(self):
|
||||
return u"Classer dans un dossier"
|
||||
|
||||
@property
|
||||
def action(self):
|
||||
return self.request.getURL() + '?documents=' + self.request.documents
|
||||
|
||||
@button.buttonAndHandler(_('Add'), name='add')
|
||||
def handleAdd(self, action):
|
||||
data, errors = self.extractData()
|
||||
if errors:
|
||||
self.status = self.formErrorsMessage
|
||||
return
|
||||
|
||||
folder_path = data['folder'].absolute_url_path()
|
||||
|
||||
for document_id in self.request.documents.split(','):
|
||||
taskqueue.add(
|
||||
'{}/background_add_link'.format(document_id),
|
||||
params={'folder': folder_path},
|
||||
)
|
||||
|
||||
self._finishedAdd = True
|
||||
return
|
|
@ -87,6 +87,21 @@
|
|||
layer="collective.taskqueue.interfaces.ITaskQueueLayer"
|
||||
/>
|
||||
|
||||
<browser:page
|
||||
name="add_multi_link"
|
||||
for="*"
|
||||
class=".add_multi_link.AddLinks"
|
||||
permission="cmf.AddPortalContent"
|
||||
/>
|
||||
|
||||
<browser:page
|
||||
name="background_add_link"
|
||||
class=".add_multi_link.BackgroundAddLinkView"
|
||||
for="*"
|
||||
permission="cmf.AddPortalContent"
|
||||
layer="collective.taskqueue.interfaces.ITaskQueueLayer"
|
||||
/>
|
||||
|
||||
<browser:page
|
||||
name="ask_multi_validation"
|
||||
for="*"
|
||||
|
|
Reference in New Issue