Add set_default_card and set_default_card_from_stripe methods
This commit is contained in:
parent
4dd407da67
commit
a6d28bff86
1 changed files with 34 additions and 2 deletions
|
@ -10,6 +10,7 @@ from django.utils.functional import cached_property
|
||||||
from membership.models import StripeCustomer, CustomUser
|
from membership.models import StripeCustomer, CustomUser
|
||||||
from utils.mixins import AssignPermissionsMixin
|
from utils.mixins import AssignPermissionsMixin
|
||||||
from utils.models import BillingAddress
|
from utils.models import BillingAddress
|
||||||
|
from utils.stripe_utils import StripeUtils
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -201,11 +202,12 @@ class UserCardDetail(AssignPermissionsMixin, models.Model):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, stripe_customer=None, last4=None, brand=None,
|
def create(cls, stripe_customer=None, last4=None, brand=None,
|
||||||
fingerprint=None, exp_month=None, exp_year=None, card_id=None):
|
fingerprint=None, exp_month=None, exp_year=None, card_id=None,
|
||||||
|
preferred=False):
|
||||||
instance = cls.objects.create(
|
instance = cls.objects.create(
|
||||||
stripe_customer=stripe_customer, last4=last4, brand=brand,
|
stripe_customer=stripe_customer, last4=last4, brand=brand,
|
||||||
fingerprint=fingerprint, exp_month=exp_month, exp_year=exp_year,
|
fingerprint=fingerprint, exp_month=exp_month, exp_year=exp_year,
|
||||||
card_id=card_id
|
card_id=card_id, preferred=preferred
|
||||||
)
|
)
|
||||||
instance.assign_permissions(stripe_customer.user)
|
instance.assign_permissions(stripe_customer.user)
|
||||||
return instance
|
return instance
|
||||||
|
@ -262,3 +264,33 @@ class UserCardDetail(AssignPermissionsMixin, models.Model):
|
||||||
card_id=card_details['card_id']
|
card_id=card_details['card_id']
|
||||||
)
|
)
|
||||||
return card_detail
|
return card_detail
|
||||||
|
|
||||||
|
def set_default_card(self, stripe_api_cus_id, stripe_source_id):
|
||||||
|
"""
|
||||||
|
Sets the given stripe source as the default source for the given
|
||||||
|
Stripe customer
|
||||||
|
:param stripe_api_cus_id: Stripe customer id
|
||||||
|
:param stripe_source_id: The Stripe source id
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
stripe_utils = StripeUtils()
|
||||||
|
cus_response = stripe_utils.get_customer(stripe_api_cus_id)
|
||||||
|
cu = cus_response['response_object']
|
||||||
|
cu.default_source = stripe_source_id
|
||||||
|
cu.save()
|
||||||
|
self._save_default_card(stripe_api_cus_id, stripe_source_id)
|
||||||
|
|
||||||
|
def set_default_card_from_stripe(self, stripe_api_cus_id):
|
||||||
|
stripe_utils = StripeUtils()
|
||||||
|
cus_response = stripe_utils.get_customer(stripe_api_cus_id)
|
||||||
|
cu = cus_response['response_object']
|
||||||
|
default_source = cu.default_source
|
||||||
|
self._save_default_card(stripe_api_cus_id, default_source)
|
||||||
|
|
||||||
|
def _save_default_card(self, stripe_api_cus_id, card_id):
|
||||||
|
stripe_cust = StripeCustomer.objects.get(stripe_id=stripe_api_cus_id)
|
||||||
|
user_card_detail = UserCardDetail.objects.get(
|
||||||
|
stripe_customer=stripe_cust, card_id=card_id
|
||||||
|
)
|
||||||
|
user_card_detail.preferred = True
|
||||||
|
user_card_detail.save()
|
Loading…
Reference in a new issue