Example #1
0
    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
Example #3
0
    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()
Example #4
0
    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()