def copy_documents_from_remote_task(self, task, target, documents=None, comment=None): transporter = Transporter() data = dispatch_json_request( task.admin_unit_id, '@@task-documents-extract', path=task.physical_path, data={'documents': json.dumps(documents)}) intids_mapping = {} intids = getUtility(IIntIds) for item in data: obj = transporter.create(item, target) # Set custom initial version comment if comment: Versioner(obj).set_custom_initial_version_comment(comment) oldintid = IAnnotations(obj)[ORIGINAL_INTID_ANNOTATION_KEY] newintid = intids.getId(obj) intids_mapping[oldintid] = newintid return intids_mapping
def copy_documents_from_remote_task(self, task, target, documents=None, comment=None): transporter = Transporter() data = dispatch_json_request(task.admin_unit_id, '@@task-documents-extract', path=task.physical_path, data={'documents': json.dumps(documents)}) intids_mapping = {} intids = getUtility(IIntIds) for item in data: obj = transporter.create(item, target) # Set custom initial version comment if comment: Versioner(obj).set_custom_initial_version_comment(comment) oldintid = IAnnotations(obj)[ORIGINAL_INTID_ANNOTATION_KEY] newintid = intids.getId(obj) intids_mapping[oldintid] = newintid return intids_mapping
def render(self): data = self.request.get('data', None) assert data is not None, 'Bad request: no delivery data found' data = json.loads(data) if self.is_already_delivered(data): return ok_response() mtool = getToolByName(self.context, 'portal_membership') member = mtool.getAuthenticatedMember() if not member.checkPermission('Add portal content', self.context): raise Unauthorized() # Set the "X-CREATING-SUCCESSOR" flag for preventing the event # handler from creating additional responses per added document. self.request.set('X-CREATING-SUCCESSOR', True) # Create the delivered documents: transporter = Transporter() documents = [] message = _( u'version_message_resolved_task', default=u'Document copied from task (task resolved)') if data.get( 'transition') == 'task-transition-in-progress-tested-and-closed': message = _( u'version_message_closed_task', default=u'Document copied from task (task closed)') with CustomInitialVersionMessage(message, self.context.REQUEST): for item in data['documents']: doc = transporter.create(item, self.context) # append `RE:` prefix to the document title doc.title = '%s: %s' % ( translate( _(u'answer_prefix', default=u'RE'), context=self.context.REQUEST), doc.title) documents.append(doc) notify(ObjectAddedEvent(doc)) # Change workflow state of predecessor task: util.change_task_workflow_state( self.context, data['transition'], text=data['text'], added_object=documents) return ok_response()
def __call__(self): data = self.request.get('data', None) assert data is not None, 'Bad request: no delivery data found' data = json.loads(data) if self.is_already_delivered(data): return ok_response() mtool = getToolByName(self.context, 'portal_membership') member = mtool.getAuthenticatedMember() if not member.checkPermission('Add portal content', self.context): raise Unauthorized() # Set the "X-CREATING-SUCCESSOR" flag for preventing the event # handler from creating additional responses per added document. self.request.set('X-CREATING-SUCCESSOR', True) # Create the delivered documents: transporter = Transporter() documents = [] message = _( u'version_message_resolved_task', default=u'Document copied from task (task resolved)') if data.get( 'transition') == 'task-transition-in-progress-tested-and-closed': message = _( u'version_message_closed_task', default=u'Document copied from task (task closed)') for item in data['documents']: doc = transporter.create(item, self.context) Versioner(doc).set_custom_initial_version_comment(message) # append `RE:` prefix to the document title doc.title = '%s: %s' % ( translate( _(u'answer_prefix', default=u'RE'), context=self.context.REQUEST), doc.title) documents.append(doc) notify(ObjectAddedEvent(doc)) # Change workflow state of predecessor task: util.change_task_workflow_state( self.context, data['transition'], text=data['text'], added_object=documents) return ok_response()