dynamicweb/nosystemd/models.py

52 lines
1.5 KiB
Python

from django.db import models
from membership.models import StripeCustomer, CustomUser
from utils.models import BillingAddress
class DonatorStatus(models.Model):
ACTIVE = 'active'
CANCELED = 'canceled'
STATUS_CHOICES = (
(ACTIVE, 'Active'),
(CANCELED, 'Canceled')
)
user = models.OneToOneField(CustomUser)
status = models.CharField(choices=STATUS_CHOICES, max_length=10, default=ACTIVE)
def __str__(self):
return "%s - %s " % (self.user.email, self.status)
@classmethod
def create(cls, user):
cls.objects.get_or_create(user=user)
def set_active(self):
self.status = DonatorStatus.ACTIVE
self.save()
class Donation(models.Model):
donation = models.FloatField()
donator = models.ForeignKey(StripeCustomer)
created_at = models.DateTimeField(auto_now_add=True)
billing_address = models.ForeignKey(BillingAddress)
last4 = models.CharField(max_length=4)
cc_brand = models.CharField(max_length=10)
stripe_charge_id = models.CharField(max_length=100, null=True)
@classmethod
def create(cls, data):
obj = cls.objects.create(**data)
return obj
@classmethod
def get_total_donations_amount(cls):
return sum(cls.objects.all().values_list('donation', flat=True))
def set_stripe_charge(self, stripe_charge):
self.stripe_charge_id = stripe_charge.id
self.last4 = stripe_charge.source.last4
self.cc_brand = stripe_charge.source.brand
self.save