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…
	
	Add table
		Add a link
		
	
		Reference in a new issue