Ignore:
Timestamp:
12 Mar 2015, 05:23:47 (10 years ago)
Author:
uli
Message:

Let cc payments basically run.

Location:
main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/customers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/customers/browser.py

    r12735 r12740  
    15321532            payment, view_name = service.next_step(payment.payment_id)
    15331533            url = self.url(payment, view_name)
    1534             IWorkflowInfo(self.context).fireTransition('await')
    15351534            self.redirect(url)
    15361535            return
  • main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/customers/contracts.py

    r12734 r12740  
    2020"""
    2121import grok
     22from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState
    2223from zope.catalog.interfaces import ICatalog
    2324from zope.component import getUtility, queryUtility
     
    2526from zope.interface import implementedBy
    2627from zope.schema import getFields
    27 from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState
    2828from waeup.ikoba.interfaces import MessageFactory as _
    2929from waeup.ikoba.interfaces import (
     
    3333    IContractSelectProduct, ICustomersUtils, ISampleContract,
    3434    ISampleContractProcess, ISampleContractEdit, ISampleContractOfficialUse)
    35 from waeup.ikoba.payments.interfaces import IPayer, IPayableFinder, IPayable
    36 from waeup.ikoba.payments.payment import PaymentItem
     35from waeup.ikoba.payments.interfaces import (
     36    IPayer, IPayableFinder, IPayable, IPaymentWaitingForGatewayEvent,
     37    STATE_PAID, STATE_FAILED, IPaymentFinishedEvent
     38    )
     39from waeup.ikoba.payments.payment import (
     40    PaymentItem, find_payable_from_payable_id,
     41    )
    3742from waeup.ikoba.utils.helpers import attrs_to_fields
    3843
     
    248253
    249254
     255@grok.subscribe(IPaymentWaitingForGatewayEvent)
     256def handle_payment_waiting_for_gw(event):
     257    maybe_contract = find_payable_from_payable_id(
     258        event.object.payable_id)
     259    if IContract.providedBy(maybe_contract):
     260        IWorkflowInfo(maybe_contract).fireTransition('await')
     261
     262
     263@grok.subscribe(IPaymentFinishedEvent)
     264def handle_payment_finished(event):
     265    payment = event.object
     266    maybe_contract = find_payable_from_payable_id(payment.payable_id)
     267    if not IContract.providedBy(maybe_contract):
     268        return
     269    if payment.state == STATE_PAID:
     270        IWorkflowInfo(maybe_contract).fireTransition('confirm')
     271    else:
     272        IWorkflowInfo(maybe_contract).fireTransition('discard')
     273
     274
    250275class ContractFinder(grok.GlobalUtility):
    251276    grok.name('contracts_finder')
Note: See TracChangeset for help on using the changeset viewer.