Пример #1
0
    def render(self):
        transition = self.request.form.get('transition', None)
        text = self.request.form.get('text', None)
        if transition is None or not text:
            msg = _(u'There were some errors. Required input is missing.')
            api.portal.show_message(message=msg,
                                    request=self.request,
                                    type='error')
        else:
            review_state = api.content.get_state(self.context)
            # we use the current state as a marker to indicate
            # no review state change
            if transition != review_state:
                # we need to make the transition first
                api.content.transition(self.context, transition)
                review_state = api.content.get_state(self.context)
            responses = IResponseContainer(self.context)
            responses.add(Response(review_state, text))

            # notify the claim has a new response
            notify(ObjectModifiedEvent(self.context))
            msg = _(u'Item created.')
            api.portal.show_message(message=msg, request=self.request)

        self.request.response.redirect(self.context.absolute_url())
    def test_adding(self):
        adapter = IResponseContainer(self.claim)
        review_state = api.content.get_state(self.claim)
        adapter.add(Response(review_state, u'First response.'))

        with api.env.adopt_roles(['Manager']):
            api.content.transition(self.claim, 'accept')
            review_state = api.content.get_state(self.claim)
            adapter.add(Response(review_state, u'Second response.'))
            api.content.transition(self.claim, 'resolve')
            review_state = api.content.get_state(self.claim)
            adapter.add(Response(review_state, u'Third response.'))

        self.assertEqual(len(adapter), 3)

        # check the first response
        self.assertEqual(adapter[0].creator, 'test_user_1_')
        self.assertEqual(adapter[0].review_state, 'Pending')
        self.assertTrue(isinstance(adapter[0].date, datetime))
        self.assertEqual(adapter[0].text, u'First response.')

        # same creator, we only adopted a rol to make the transition
        self.assertEqual(adapter[1].creator, 'test_user_1_')
        self.assertEqual(adapter[2].creator, 'test_user_1_')

        # dates are sequential
        self.assertTrue(adapter[0].date < adapter[1].date)
        self.assertTrue(adapter[1].date < adapter[2].date)

        # review states and text are ok
        self.assertEqual(adapter[1].review_state, 'Accepted')
        self.assertEqual(adapter[2].review_state, 'Resolved')
        self.assertEqual(adapter[1].text, u'Second response.')
        self.assertEqual(adapter[2].text, u'Third response.')
Пример #3
0
 def set_claim_response(self, claim):
     """Return a list of Claim response objects as dictionaries.
     """
     results = []
     container = IResponseContainer(claim)
     for id, response in enumerate(container):
         if response is None:
             continue  # response has been removed
         results.append(dict(id=id + 1,
                             creator=type_cast(response.creator),
                             date=type_cast(response.date),
                             review_state=type_cast(response.review_state),
                             text=type_cast(response.text)))
     return results
    def render(self):
        transition = self.request.form.get('transition', None)
        text = self.request.form.get('text', None)
        if transition is None or not text:
            msg = _(u'There were some errors. Required input is missing.')
            api.portal.show_message(message=msg, request=self.request, type='error')
        else:
            review_state = api.content.get_state(self.context)
            # we use the current state as a marker to indicate
            # no review state change
            if transition != review_state:
                # we need to make the transition first
                api.content.transition(self.context, transition)
                review_state = api.content.get_state(self.context)
            responses = IResponseContainer(self.context)
            responses.add(Response(review_state, text))

            # notify the claim has a new response
            notify(ObjectModifiedEvent(self.context))
            msg = _(u'Item created.')
            api.portal.show_message(message=msg, request=self.request)

        self.request.response.redirect(self.context.absolute_url())
 def _responses(self):
     """Return a list of responses for the current Claim.
     """
     transforms = api.portal.get_tool('portal_transforms')
     responses = []
     container = IResponseContainer(self.context)
     for id, response in enumerate(container):
         if response is None:
             continue  # response has been removed
         responses.append(
             dict(id=id + 1,
                  creator=response.creator,
                  date=response.date,
                  review_state=response.review_state,
                  text=transforms.convertTo(
                      'text/html',
                      response.text,
                      context=self.context,
                      mimetype='text/x-web-intelligent').getData()))
     return responses