示例#1
0
    @property
    def total_budget(self):
        if self.bonus:
            return self.budget + self.bonus
        else:
            return self.budget

class BonusAdvertisingTransaction(models.Model):
    budget = MoneyField(max_digits=10, decimal_places=2, default_currency='CAD')
    campaign = models.ForeignKey(AdvertisingCampaign)
    processed_at = models.DateTimeField(auto_now_add=True, default=datetime.datetime.now)
    order = models.OneToOneField(AdvertisingOrder, null=True)        


AdvertisingPayment = build_payment_model(AdvertisingOrder, unique=True)

def get_items(self):
        """Retrieves item list using signal query. Listeners must fill
        'items' list with at least one item. Each item is expected to be
        a dictionary, containing at least 'name' element and optionally
        'unit_price' and 'quantity' elements. If not present, 'unit_price'
        and 'quantity' default to 0 and 1 respectively.

        Listener is responsible for providing item list with sum of prices
        consistient with Payment.amount. Otherwise the final amount may
        differ and lead to unpredictable results, depending on the backend used.
        """
        items = []
        signals.order_items_query.send(sender=type(self), instance=self, items=items)
示例#2
0
from django.test import TestCase
from mamona.models import build_payment_model
from ....order.tests import order_app
from . import MamonaProvider

TestPayment = build_payment_model(order_app.Order,
                                  unique=True,
                                  related_name='payments')


class TestProvider(MamonaProvider):
    payment_class = TestPayment


class Mamona(TestCase):
    pass
示例#3
0
from django.core.exceptions import ObjectDoesNotExist
from mamona.models import build_payment_model

from ....payment.models import PaymentVariant


class MamonaPaymentVariant(PaymentVariant):
    def __unicode__(self):
        try:
            payment = self.payments.get()
        except ObjectDoesNotExist:
            return u"(empty mamona payment)"
        if payment.status == 'paid':
            return u"%.2f %s via %s on %s (by mamona)" % (
                payment.amount, payment.get_status_display(), payment.backend,
                payment.paid_on)
        else:
            return u"%.2f %s via %s created on %s (by mamona)" % (
                payment.amount, payment.get_status_display(), payment.backend,
                payment.created_on)


Payment = build_payment_model(MamonaPaymentVariant,
                              unique=True,
                              related_name='payments')
示例#4
0
文件: models.py 项目: kkdeep/mamona
from django.db import models
from order.models import UnawareOrder
from mamona.models import build_payment_model

# We build the final Payment model here, in external app,
# without touching the code containing UnawareObject.
build_payment_model(UnawareOrder, unique=False, related_name='payments')
import listeners
示例#5
0
from django.core.exceptions import ObjectDoesNotExist
from django.db import models
from mamona.models import build_payment_model
from satchless.payment.models import PaymentVariant

class MamonaPaymentVariant(PaymentVariant):
    def __unicode__(self):
        try:
            payment = self.payments.get()
        except ObjectDoesNotExist:
            return u"(empty mamona payment)"
        if payment.status == 'paid':
            return u"%.2f %s via %s on %s (by mamona)" % (
                    payment.amount,
                    payment.get_status_display(),
                    payment.backend,
                    payment.paid_on)
        else:
            return u"%.2f %s via %s created on %s (by mamona)" % (
                    payment.amount,
                    payment.get_status_display(),
                    payment.backend,
                    payment.created_on)

Payment = build_payment_model(MamonaPaymentVariant, unique=True, related_name='payments')
示例#6
0
            return self.budget + self.bonus
        else:
            return self.budget


class BonusAdvertisingTransaction(models.Model):
    budget = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='CAD')
    campaign = models.ForeignKey(AdvertisingCampaign)
    processed_at = models.DateTimeField(auto_now_add=True,
                                        default=datetime.datetime.now)
    order = models.OneToOneField(AdvertisingOrder, null=True)


AdvertisingPayment = build_payment_model(AdvertisingOrder, unique=True)


def get_items(self):
    """Retrieves item list using signal query. Listeners must fill
        'items' list with at least one item. Each item is expected to be
        a dictionary, containing at least 'name' element and optionally
        'unit_price' and 'quantity' elements. If not present, 'unit_price'
        and 'quantity' default to 0 and 1 respectively.

        Listener is responsible for providing item list with sum of prices
        consistient with Payment.amount. Otherwise the final amount may
        differ and lead to unpredictable results, depending on the backend used.
        """
    items = []
    signals.order_items_query.send(sender=type(self),