Example #1
0
    def __call__(self):
        text = self.request.get('text')
        if self.is_already_done():
            return ok_response(self.request)

        change_task_workflow_state(self.context, self.transition, text=text)
        return ok_response(self.request)
Example #2
0
    def __call__(self):
        text = self.request.get('text')
        if self.is_already_done():
            return ok_response(self.request)

        change_task_workflow_state(self.context, self.transition, text=text)
        return ok_response(self.request)
Example #3
0
    def __call__(self):
        self._check_internal_request()

        transition = self.request.get('transition')
        text = self.request.get('text')

        if self._is_already_done(transition, text):
            return ok_response(self.request)

        self._update(transition, text)
        return ok_response(self.request)
Example #4
0
    def render(self):
        if self.is_already_accepted():
            return ok_response()

        text = self.request.get("text")
        successor_oguid = self.request.get("successor_oguid")

        center = notification_center()
        center.remove_task_responsible(self.context, self.context.responsible)

        accept_task_with_response(self.context, text, successor_oguid=successor_oguid)
        return ok_response()
Example #5
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()
Example #6
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 #7
0
    def __call__(self):
        if self.is_already_accepted():
            return ok_response()

        text = safe_unicode(self.request.get('text'))
        successor_oguid = self.request.get('successor_oguid')

        center = notification_center()
        center.remove_task_responsible(self.context, self.context.responsible)

        accept_task_with_response(self.context, text,
                                  successor_oguid=successor_oguid)
        return ok_response()
Example #8
0
    def __call__(self):
        if self.is_already_accepted():
            return ok_response()

        text = self.request.get('text')
        successor_oguid = self.request.get('successor_oguid')

        center = notification_center()
        center.remove_task_responsible(self.context, self.context.responsible)

        accept_task_with_response(self.context,
                                  text,
                                  successor_oguid=successor_oguid)
        return ok_response()
Example #9
0
    def render(self):
        # Set correct content type for response
        self.request.response.setHeader("Content-type", "text/plain")

        ee_session_status = self.request.form.get('status', 'UNKNOWN')
        file_upload = self.request.form.get('upload')
        if not file_upload:
            return "FAILED: No file uploaded"
        file_data = file_upload.read()

        blackbox_dir = os.environ.get('BLACKBOX_DIR', 'var/blackbox')
        blackbox_dir = os.path.abspath(blackbox_dir)
        if not os.path.isdir(blackbox_dir):
            mkdir_p(blackbox_dir)

        timestamp = datetime.today().strftime("%Y-%m-%d_%H-%M-%S")
        filename = "blackbox-%s.zip" % timestamp
        path = os.path.join(blackbox_dir, filename)
        outfile = open(path, 'w')
        outfile.write(file_data)
        outfile.close()
        logger.info("Blackbox from EE session (status: %s) saved to %s" % (
                ee_session_status, path))

        return ok_response()
Example #10
0
    def __call__(self):
        data = advancedjson.loads(self.request.get('data'))
        timestamp = data['timestamp']

        data = data['data']
        IHistory(self.context).receive_record(timestamp, data)

        return ok_response(self.request)
Example #11
0
    def __call__(self):
        jsondata = self.request.get('data-set')
        key = self.request.get('key')
        data = json.loads(jsondata)

        getUtility(IWizardDataStorage).update(key, data)

        return ok_response()
Example #12
0
    def __call__(self):
        rawdata = self.request.get('responses')
        data = json.loads(rawdata)

        transporter = IResponseTransporter(self.context)
        current_data = json.loads(transporter.extract_responses())
        if current_data == data:
            # In case of a conflict error while committing on the
            # source admin_unit this view is called twice or more. If the
            # current_data and data maches, it is not the first
            # request and we are in conflict resolution. Thus for not
            # duplicating responses we abort with "OK" (since we have
            # already this exact task in a earlier request).
            return ok_response(self.request)

        transporter.create_responses(data)

        return ok_response(self.request)
    def __call__(self):
        rawdata = self.request.get('responses')
        data = json.loads(rawdata)

        transporter = IResponseTransporter(self.context)
        current_data = json.loads(transporter.extract_responses())
        if current_data == data:
            # In case of a conflict error while committing on the
            # source admin_unit this view is called twice or more. If the
            # current_data and data maches, it is not the first
            # request and we are in conflict resolution. Thus for not
            # duplicating responses we abort with "OK" (since we have
            # already this exact task in a earlier request).
            return ok_response(self.request)

        transporter.create_responses(data)

        return ok_response(self.request)
Example #14
0
    def __call__(self):
        if self.is_already_accepted():
            return ok_response()

        text = safe_unicode(self.request.get('text'))
        successor_oguid = self.request.get('successor_oguid')

        center = notification_center()
        center.remove_task_responsible(self.context, self.context.responsible)

        # Remove task reminders of potential responsibles
        reminders = self.context.get_reminders_of_potential_responsibles()
        for userid in reminders.keys():
            self.context.clear_reminder(user_id=userid)

        accept_task_with_response(self.context,
                                  text,
                                  successor_oguid=successor_oguid)
        return ok_response()
Example #15
0
    def render(self):
        new_deadline = self.request.get('new_deadline', None)
        new_deadline = date.fromordinal(int(new_deadline))
        text = self.request.get('text', u'')
        transition = self.request.get('transition')

        IDeadlineModifier(self.context).update_deadline(
            new_deadline, text, transition)

        return ok_response()
Example #16
0
    def render(self):
        self.check_internal_request()

        transition = self.request.get("transition")
        text = self.request.get("text")
        responsible = self.request.get("responsible")
        responsible_client = self.request.get("responsible_client")

        if self.is_already_done(transition, text):
            return ok_response(self.request)

        wftool = getToolByName(self.context, "portal_workflow")

        # change workflow state
        before = wftool.getInfoFor(self.context, "review_state")
        before = wftool.getTitleForStateOnType(before, self.context.Type())

        wftool.doActionFor(self.context, transition)

        after = wftool.getInfoFor(self.context, "review_state")
        after = wftool.getTitleForStateOnType(after, self.context.Type())

        # create response
        response = add_simple_response(self.context, transition=transition, text=text)

        if responsible and responsible is not "None":
            # special handling for reassign
            response.add_change(
                "responsible",
                _(u"label_responsible", default=u"Responsible"),
                ITask(self.context).responsible,
                responsible,
            )

            ITask(self.context).responsible_client = responsible_client
            ITask(self.context).responsible = responsible

            notify(ObjectModifiedEvent(self.context))

        response.add_change("review_state", _(u"Issue state"), before, after)

        return ok_response(self.request)
Example #17
0
    def __call__(self):
        if self.is_already_done():
            return ok_response()

        mtool = getToolByName(self.context, 'portal_membership')
        member = mtool.getAuthenticatedMember()

        if not member.checkPermission('Add portal content', self.context):
            raise Unauthorized()

        successor_oguid = self.request.get('successor_oguid')
        transition = self.request.get('transition')
        response_text = self.request.get('response_text')

        if transition:
            change_task_workflow_state(self.context,
                                       transition,
                                       text=response_text,
                                       successor_oguid=successor_oguid)

        IYearfolderStorer(self.context).store_in_yearfolder()

        return ok_response()
Example #18
0
    def __call__(self):
        if self.is_already_done():
            return ok_response()

        mtool = getToolByName(self.context, 'portal_membership')
        member = mtool.getAuthenticatedMember()

        if not member.checkPermission('Add portal content', self.context):
            raise Unauthorized()

        successor_oguid = self.request.get('successor_oguid')
        transition = self.request.get('transition')
        response_text = self.request.get('response_text')

        if transition:
            change_task_workflow_state(self.context,
                                       transition,
                                       text=response_text,
                                       successor_oguid=successor_oguid)

        IYearfolderStorer(self.context).store_in_yearfolder()

        return ok_response()
    def __call__(self):
        data = advancedjson.loads(self.request.get('data'))
        text = data['text']

        with elevated_privileges():
            with as_internal_workflow_transition():
                api.content.transition(
                    obj=self.context, transition='proposal-transition-reject')
            IHistory(self.context).append_record(
                u'rejected', text=text)
            ProposalRejectedActivity(self.context, self.request).record()

            self.context.date_of_submission = None

        return ok_response(self.request)
    def __call__(self):
        alsoProvides(self.request, IDisableCSRFProtection)  # internal request

        data = advancedjson.loads(self.request.get('data'))
        meeting_id = data['meeting_id']

        with elevated_privileges():
            with as_internal_workflow_transition():
                api.content.transition(
                    obj=self.context, transition='proposal-transition-unschedule')
            IHistory(self.context).append_record(
                u'remove_scheduled', meeting_id=meeting_id)
            ProposalRemovedFromScheduleActivity(
                self.context, self.request, meeting_id).record()

        return ok_response(self.request)