Ignore:
Timestamp:
11 May 2012, 14:18:47 (13 years ago)
Author:
Henrik Bettermann
Message:

Add methods for approving payments and implement pages for approving payments (work in progress).

Location:
main/waeup.kofa/trunk/src/waeup/kofa/applicants
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py

    r8404 r8420  
    591591            'b':self.context.p_id})
    592592
    593 class OnlinePaymentCallbackPage(UtilityView, grok.View):
    594     """ Callback view
     593class OnlinePaymentApprovePage(UtilityView, grok.View):
     594    """ Approval view
    595595    """
    596596    grok.context(IApplicantOnlinePayment)
    597     grok.name('simulate_callback')
    598     grok.require('waeup.payApplicant')
    599 
    600     # This update method simulates a valid callback und must be
    601     # neutralized in the customization package.
     597    grok.name('approve')
     598    grok.require('waeup.managePortal')
     599
    602600    def update(self):
    603601        self.wf_info = IWorkflowInfo(self.context.__parent__)
     
    607605            self.flash('Error: %s' % sys.exc_info()[1])
    608606            return
    609         self.context.r_amount_approved = self.context.amount_auth
    610         self.context.r_code = u'00'
    611         self.context.p_state = 'paid'
    612         self.context.payment_date = datetime.utcnow()
     607        self.context.approve()
    613608        ob_class = self.__implemented__.__name__.replace('waeup.kofa.','')
    614609        self.context.__parent__.loggerInfo(
  • main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py

    r8406 r8420  
    696696        #self.assertMatches('...Ticket not yet paid...',
    697697        #                   self.browser.contents)
    698         # Request callback
    699         self.browser.getLink("Request callback").click()
    700         self.assertMatches('...Valid callback received...',
    701                           self.browser.contents)
    702         # Callback can't be applied twice
    703         self.browser.open(payment_url + '/simulate_callback')
    704         self.assertMatches(
    705             "...Transition 'pay' requires 'started' as source state...",
    706             self.browser.contents)
     698        # Approve payment
     699        # Applicants can't approve payments
     700        self.assertRaises(
     701            Unauthorized, self.browser.open, payment_url + '/approve')
     702        # We approve the payment by bypassing the view
     703        payment_id = self.applicant.keys()[0]
     704        payment = self.applicant[payment_id]
     705        payment.approve()
    707706        # The payment slip can be downloaded now
    708707        self.browser.open(payment_url)
     
    711710        self.assertEqual(self.browser.headers['Content-Type'],
    712711                         'application/pdf')
    713         # Applicant is is in state 'paid'
     712        # Applicant is is not yet in state 'paid' because it was only
     713        # the payment which we set to paid
    714714        self.browser.open(self.view_path)
    715         self.assertMatches('...paid...',
     715        self.assertMatches('...started...',
    716716                           self.browser.contents)
    717717        state = IWorkflowState(self.applicant).getState()
     718        self.assertTrue(state == 'started')
     719        # Let's logout and approve the payment as manager
     720        self.browser.getLink("Logout").click()
     721        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
     722        # First we reset the payment
     723        payment.r_amount_approved = 0.0
     724        payment.r_code = u''
     725        payment.p_state = 'unpaid'
     726        payment.r_desc = u''
     727        payment.payment_date = None
     728        self.browser.open(payment_url)
     729        self.browser.getLink("Approve payment").click()
     730        self.assertEqual(payment.p_state, 'paid')
     731        self.assertEqual(payment.r_amount_approved, 200.0)
     732        self.assertEqual(payment.r_code, 'AP')
     733        state = IWorkflowState(self.applicant).getState()
    718734        self.assertTrue(state == 'paid')
     735        return
    719736
    720737    def test_final_submit(self):
  • main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py

    r8406 r8420  
    185185        return self.view.url(self.view.context, self.target)
    186186
    187 class RequestCallbackActionButton(ManageActionButton):
     187class ApprovePaymentActionButton(ManageActionButton):
    188188    grok.order(2)
    189189    grok.context(IApplicantOnlinePayment)
    190190    grok.view(OnlinePaymentDisplayFormPage)
    191     grok.require('waeup.payApplicant')
     191    grok.require('waeup.managePortal')
    192192    icon = 'actionicon_call.png'
    193     text = _('Request callback')
    194     target = 'simulate_callback'
    195 
    196     # This button must be neutralized
    197     # in the customization package.
     193    text = _('Approve payment')
     194    target = 'approve'
     195
    198196    @property
    199197    def target_url(self):
Note: See TracChangeset for help on using the changeset viewer.