Ejemplo n.º 1
0
    def test_accepting_forwarding_with_successor_updated_responsibles(
            self, browser):
        inbox = create(Builder('inbox'))
        forwarding = create(
            Builder('forwarding').having(responsible=TEST_USER_ID,
                                         issuer='hugo.boss').within(inbox))

        successor = accept_forwarding_with_successor(
            self.portal,
            forwarding.oguid.id,
            'OK. That is something for me.',
            dossier=None)

        forwarding_resource = self.center.fetch_resource(forwarding)
        successor_resource = self.center.fetch_resource(successor)

        self.assertItemsEqual(
            [(u'hugo.boss', u'task_issuer')],
            [(subscription.watcher.actorid, subscription.role)
             for subscription in forwarding_resource.subscriptions])

        self.assertItemsEqual(
            [(u'test_user_1_', u'task_responsible'),
             (u'inbox:org-unit-1', u'task_issuer')],
            [(subscription.watcher.actorid, subscription.role)
             for subscription in successor_resource.subscriptions])
Ejemplo n.º 2
0
            def handleAdd(self, action):
                # create the dossier
                data, errors = self.extractData()
                if errors:
                    self.status = self.formErrorsMessage
                    return
                obj = self.createAndAdd(data)
                if obj is not None:
                    # mark only as finished if we get the new object
                    self._finishedAdd = True

                # Get a properly aq wrapped object
                dossier = self.context.get(obj.id)

                dm = getUtility(IWizardDataStorage)
                oguid = self.request.get('oguid')
                dmkey = 'accept:%s' % oguid

                # forwarding
                if dm.get(dmkey, 'is_forwarding'):
                    if dm.get(dmkey, 'is_only_assign'):
                        task = assign_forwarding_to_dossier(
                            self.context, oguid, dossier, dm.get(
                                dmkey, 'text'))

                        IStatusMessage(self.request).addStatusMessage(
                            _(u'The forwarding is now assigned to the new '
                              'dossier'),
                            'info')

                        self.request.RESPONSE.redirect(
                            '%s/edit' % task.absolute_url())

                    else:
                        task = accept_forwarding_with_successor(
                            self.context,
                            oguid,
                            dm.get(dmkey, 'text'),
                            dossier=dossier)

                        IStatusMessage(self.request).addStatusMessage(
                            _(u'The forwarding has been stored in the '
                              u'local inbox and the succesor task has been'
                              u' created'), 'info')

                        self.request.RESPONSE.redirect(
                            '%s/edit' % task.absolute_url())

                else:
                    # create the successor task, accept the predecessor
                    task = accept_task_with_successor(
                        dossier,
                        oguid,
                        dm.get(dmkey, 'text'))

                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The new dossier has been created and the task '
                          u'has been copied to the new dossier.'), 'info')

                    self.request.RESPONSE.redirect(task.absolute_url())
Ejemplo n.º 3
0
    def test_accepting_forwarding_with_successor_updated_responsibles(self, browser):
        inbox = create(Builder('inbox'))
        forwarding = create(Builder('forwarding')
                            .having(responsible=TEST_USER_ID,
                                    issuer='hugo.boss')
                            .within(inbox))
        self.center.add_task_responsible(forwarding, TEST_USER_ID)
        self.center.add_task_issuer(forwarding, 'hugo.boss')

        successor = accept_forwarding_with_successor(
            self.portal, forwarding.oguid.id,
            'OK. That is something for me.', dossier=None)

        forwarding_resource = self.center.fetch_resource(forwarding)
        successor_resource = self.center.fetch_resource(successor)

        self.assertItemsEqual(
            [(u'hugo.boss', u'task_issuer')],
            [(subscription.watcher.actorid, subscription.role)
             for subscription in forwarding_resource.subscriptions])

        self.assertItemsEqual(
            [(u'test_user_1_', u'task_responsible'),
             (u'inbox:client1', u'task_issuer')],
            [(subscription.watcher.actorid, subscription.role)
             for subscription in successor_resource.subscriptions])
Ejemplo n.º 4
0
            def handleAdd(self, action):
                # create the dossier
                data, errors = self.extractData()
                if errors:
                    self.status = self.formErrorsMessage
                    return
                obj = self.createAndAdd(data)
                if obj is not None:
                    # mark only as finished if we get the new object
                    self._finishedAdd = True

                # Get a properly aq wrapped object
                dossier = self.context.get(obj.id)

                dm = getUtility(IWizardDataStorage)
                oguid = self.request.get('oguid')
                dmkey = 'accept:%s' % oguid

                # forwarding
                if dm.get(dmkey, 'is_forwarding'):
                    if dm.get(dmkey, 'is_only_assign'):
                        task = assign_forwarding_to_dossier(
                            self.context, oguid, dossier, dm.get(
                                dmkey, 'text'))

                        IStatusMessage(self.request).addStatusMessage(
                            _(u'The forwarding is now assigned to the new '
                              'dossier'),
                            'info')

                        self.request.RESPONSE.redirect(
                            '%s/edit' % task.absolute_url())

                    else:
                        task = accept_forwarding_with_successor(
                            self.context,
                            oguid,
                            dm.get(dmkey, 'text'),
                            dossier=dossier)

                        IStatusMessage(self.request).addStatusMessage(
                            _(u'The forwarding has been stored in the '
                              u'local inbox and the succesor task has been'
                              u' created'), 'info')

                        self.request.RESPONSE.redirect(
                            '%s/edit' % task.absolute_url())

                else:
                    # create the successor task, accept the predecessor
                    task = accept_task_with_successor(
                        dossier,
                        oguid,
                        dm.get(dmkey, 'text'))

                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The new dossier has been created and the task '
                          u'has been copied to the new dossier.'), 'info')

                    self.request.RESPONSE.redirect(task.absolute_url())
Ejemplo n.º 5
0
    def test_successor_task_is_created_with_information_task_type(self):
        inbox = create(Builder('inbox'))
        dossier = create(Builder('dossier'))
        forwarding = create(Builder('forwarding')
                            .having(responsible=TEST_USER_ID,
                                    issuer='hugo.boss')
                            .within(inbox))
        task = accept_forwarding_with_successor(
            self.portal, forwarding.oguid.id, 'OK, thx.', dossier=dossier)

        self.assertEquals('information', task.task_type)
Ejemplo n.º 6
0
    def render(self):
        oguid = self.request.get('oguid')
        key = 'accept:%s' % oguid
        dm = getUtility(IWizardDataStorage)
        text = dm.get(key, 'text')

        # forwarding
        if dm.get(key, 'is_forwarding'):
            forwarding = accept_forwarding_with_successor(
                self.context, oguid, text)
            IStatusMessage(self.request).addStatusMessage(
                _(u'The forwarding has been stored in the local inbox'),
                'info')
            self.request.RESPONSE.redirect(forwarding.absolute_url())
    def handle_continue(self, action):
        data, errors = self.extractData()

        if not errors:
            oguid = self.request.get('oguid')
            key = 'accept:%s' % oguid
            dm = getUtility(IWizardDataStorage)
            text = dm.get(key, 'text')

            # forwarding
            if dm.get(key, 'is_forwarding'):
                if dm.get(key, 'is_only_assign'):
                    transition_data = {
                        'text': text,
                        'dossier': IUUID(data['dossier'])}

                    wftool = api.portal.get_tool('portal_workflow')
                    task = wftool.doActionFor(
                        Oguid.parse(oguid).resolve_object(),
                        'forwarding-transition-assign-to-dossier',
                        comment=transition_data['text'],
                        transition_params=transition_data)

                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The forwarding is now assigned to the dossier'),
                        'info')
                    self.request.RESPONSE.redirect(
                        '%s/edit' % task.absolute_url())

                else:
                    task = accept_forwarding_with_successor(
                        self.context, oguid, text, dossier=data['dossier'])
                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The forwarding has been stored in the local inbox '
                          u'and the succesor task has been created'), 'info')
                    self.request.RESPONSE.redirect(
                        '%s/edit' % task.absolute_url())

            # task
            else:
                task = accept_task_with_successor(
                    data['dossier'], oguid, text)

                IStatusMessage(self.request).addStatusMessage(
                    _(u'The task has been copied to the selected dossier and '
                      u'accepted.'), 'info')
                self.request.RESPONSE.redirect(task.absolute_url())
Ejemplo n.º 8
0
    def test_accepting_and_assign_forwarding_with_successor_and__updated_responsibles(self, browser):
        inbox = create(Builder('inbox'))
        dossier = create(Builder('dossier'))
        forwarding = create(Builder('forwarding')
                            .having(responsible=TEST_USER_ID,
                                    issuer='hugo.boss')
                            .within(inbox))
        self.center.add_task_responsible(forwarding, TEST_USER_ID)
        self.center.add_task_issuer(forwarding, 'hugo.boss')

        task = accept_forwarding_with_successor(
            self.portal, forwarding.oguid.id,
            'OK. That is something for me.', dossier=dossier)

        forwarding_resource = self.center.fetch_resource(forwarding)
        task_resource = self.center.fetch_resource(task)
        self.assertItemsEqual(
            ['hugo.boss'],
            [watcher.actorid for watcher in forwarding_resource.watchers])
        self.assertItemsEqual(
            [TEST_USER_ID],
            [watcher.actorid for watcher in task_resource.watchers])
Ejemplo n.º 9
0
    def handle_continue(self, action):
        data, errors = self.extractData()

        if not errors:
            oguid = self.request.get('oguid')
            key = 'accept:%s' % oguid
            dm = getUtility(IWizardDataStorage)
            text = dm.get(key, 'text')

            # forwarding
            if dm.get(key, 'is_forwarding'):
                if dm.get(key, 'is_only_assign'):
                    task = assign_forwarding_to_dossier(
                        self.context, oguid, data['dossier'], text)
                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The forwarding is now assigned to the dossier'),
                        'info')
                    self.request.RESPONSE.redirect(
                        '%s/edit' % task.absolute_url())

                else:
                    task = accept_forwarding_with_successor(
                        self.context, oguid, text, dossier=data['dossier'])
                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The forwarding has been stored in the local inbox '
                          u'and the succesor task has been created'), 'info')
                    self.request.RESPONSE.redirect(
                        '%s/edit' % task.absolute_url())

            # task
            else:
                task = accept_task_with_successor(
                    data['dossier'], oguid, text)

                IStatusMessage(self.request).addStatusMessage(
                    _(u'The task has been copied to the selected dossier and '
                      u'accepted.'), 'info')
                self.request.RESPONSE.redirect(task.absolute_url())
Ejemplo n.º 10
0
    def handle_continue(self, action):
        data, errors = self.extractData()

        if not errors:
            oguid = self.request.get('oguid')
            key = 'accept:%s' % oguid
            dm = getUtility(IWizardDataStorage)
            text = dm.get(key, 'text')

            # forwarding
            if dm.get(key, 'is_forwarding'):
                if dm.get(key, 'is_only_assign'):
                    task = assign_forwarding_to_dossier(
                        self.context, oguid, data['dossier'], text)
                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The forwarding is now assigned to the dossier'),
                        'info')
                    self.request.RESPONSE.redirect(
                        '%s/edit' % task.absolute_url())

                else:
                    task = accept_forwarding_with_successor(
                        self.context, oguid, text, dossier=data['dossier'])
                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The forwarding has been stored in the local inbox '
                          u'and the succesor task has been created'), 'info')
                    self.request.RESPONSE.redirect(
                        '%s/edit' % task.absolute_url())

            # task
            else:
                task = accept_task_with_successor(
                    data['dossier'], oguid, text)

                IStatusMessage(self.request).addStatusMessage(
                    _(u'The task has been copied to the selected dossier and '
                      u'accepted.'), 'info')
                self.request.RESPONSE.redirect(task.absolute_url())
Ejemplo n.º 11
0
    def test_accepting_and_assign_forwarding_with_successor_and__updated_responsibles(
            self, browser):
        inbox = create(Builder('inbox'))
        dossier = create(Builder('dossier'))
        forwarding = create(
            Builder('forwarding').having(responsible=TEST_USER_ID,
                                         issuer='hugo.boss').within(inbox))
        self.center.add_task_responsible(forwarding, TEST_USER_ID)
        self.center.add_task_issuer(forwarding, 'hugo.boss')

        task = accept_forwarding_with_successor(
            self.portal,
            forwarding.oguid.id,
            'OK. That is something for me.',
            dossier=dossier)

        forwarding_resource = self.center.fetch_resource(forwarding)
        task_resource = self.center.fetch_resource(task)
        self.assertItemsEqual(
            ['hugo.boss'],
            [watcher.actorid for watcher in forwarding_resource.watchers])
        self.assertItemsEqual(
            [TEST_USER_ID],
            [watcher.actorid for watcher in task_resource.watchers])
Ejemplo n.º 12
0
    def test_accept_forwarding_with_successor_with_dossier(self):
        create_client('plone')
        set_current_client_id(self.portal, 'plone')

        # create fake predecessor
        predecessor = Task(FAKE_INTID, 'client2')
        predecessor.physical_path = 'eingangskorb/forwarding-1'
        predecessor.issuer = 'testuser2'
        predecessor.responsible_client = 'plone'
        predecessor.responsible = TEST_USER_ID
        predecessor.deadline = datetime.now()

        remote_request = self.mocker.replace('opengever.ogds.base.utils.remote_request')

        self.expect(remote_request(
                'client2', '@@transporter-extract-object-json',
                path='eingangskorb/forwarding-1',
                data={},
                headers={})).result(FakeResponse(FORWARDING_EXTRACTION))

        self.expect(remote_request(
                'client2', '@@task-documents-extract',
                path='eingangskorb/forwarding-1',
                data={'documents': 'null'},
                headers={})).result(FakeResponse(DOCUMENT_EXTRACTION))

        # TODO replace any with the realy expected data
        self.expect(remote_request(
                'client2', '@@task-responses-extract',
                path='eingangskorb/forwarding-1',
                data=ANY)).result(FakeResponse('[]'))

        self.expect(remote_request(
                'client2', '@@store_forwarding_in_yearfolder',
                path='eingangskorb/forwarding-1',
                # data={'response_text': 'This is a message',
                #       'successor_oguid': u'plone:1231066935',
                #       'transition': 'forwarding-transition-accept'}
                data=ANY,
                )).result(FakeResponse('OK'))

        self.replay()


        wft = getToolByName(self.portal, 'portal_workflow')
        intids = getUtility(IIntIds)


        session = Session()
        session.add(predecessor)

        accept_forwarding_with_successor(
            self.portal,
            'client2:%s' % FAKE_INTID,
            u'This is a message',
            dossier=self.dossier)

        # CHECKS
        # ---------------------
        # yearfolder:
        current_year = datetime.now().year
        yearfolder = self.inbox.get(str(current_year), None)
        self.assertTrue(yearfolder)
        self.assertEquals(yearfolder.title, u'Closed %s' % current_year)

        # forwarding ...
        # is stored in the yearfolder
        forwarding = yearfolder.get('forwarding-1', None)
        self.assertTrue(forwarding)

        # and closed
        self.assertEquals(wft.getInfoFor(forwarding, 'review_state'),
                          'forwarding-state-closed')

        # attributes are correctly moved
        self.assertEquals(forwarding.responsible, u'inbox:plone')

        # the issuer should be changed to the local inbox group
        self.assertEquals(forwarding.issuer, u'inbox:plone')

        # also the response is correctly added
        response = IResponseContainer(forwarding)[0]
        self.assertEquals(response.transition, 'forwarding-transition-accept')

        # task (succesor of the forwarding)
        task = self.dossier.get('task-1')
        self.assertTrue(task)
        self.assertEquals(
            ISuccessorTaskController(forwarding).get_successors()[0].int_id,
            intids.getId(task))

        # the succesor link is also in the response correctly
        self.assertEquals(
            response.successor_oguid,
            ISuccessorTaskController(task).get_oguid())
Ejemplo n.º 13
0
            def handleAdd(self, action):
                # create the dossier
                data, errors = self.extractData()
                if errors:
                    self.status = self.formErrorsMessage
                    return
                obj = self.createAndAdd(data)
                if obj is not None:
                    # mark only as finished if we get the new object
                    self._finishedAdd = True

                # Get a properly aq wrapped object
                dossier = self.context.get(obj.id)

                dm = getUtility(IWizardDataStorage)
                oguid = self.request.get('oguid')
                dmkey = 'accept:%s' % oguid

                # forwarding
                if dm.get(dmkey, 'is_forwarding'):
                    if dm.get(dmkey, 'is_only_assign'):
                        transition_data = {
                            'text': dm.get(dmkey, 'text'),
                            'dossier': IUUID(dossier)}
                        wftool = api.portal.get_tool('portal_workflow')
                        task = wftool.doActionFor(
                            Oguid.parse(oguid).resolve_object(),
                            'forwarding-transition-assign-to-dossier',
                            comment=transition_data['text'],
                            transition_params=transition_data)

                        IStatusMessage(self.request).addStatusMessage(
                            _(u'The forwarding is now assigned to the new '
                              'dossier'),
                            'info')

                        self.request.RESPONSE.redirect(
                            '%s/edit' % task.absolute_url())

                    else:
                        task = accept_forwarding_with_successor(
                            self.context,
                            oguid,
                            dm.get(dmkey, 'text'),
                            dossier=dossier)

                        IStatusMessage(self.request).addStatusMessage(
                            _(u'The forwarding has been stored in the '
                              u'local inbox and the succesor task has been'
                              u' created'), 'info')

                        self.request.RESPONSE.redirect(
                            '%s/edit' % task.absolute_url())

                else:
                    # create the successor task, accept the predecessor
                    task = accept_task_with_successor(
                        dossier,
                        oguid,
                        dm.get(dmkey, 'text'))

                    IStatusMessage(self.request).addStatusMessage(
                        _(u'The new dossier has been created and the task '
                          u'has been copied to the new dossier.'), 'info')

                    self.request.RESPONSE.redirect(task.absolute_url())