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 utils.mixins import AssignPermissionsMixin | ||||
| from utils.models import BillingAddress | ||||
| from utils.stripe_utils import StripeUtils | ||||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
|  | @ -201,11 +202,12 @@ class UserCardDetail(AssignPermissionsMixin, models.Model): | |||
| 
 | ||||
|     @classmethod | ||||
|     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( | ||||
|             stripe_customer=stripe_customer, last4=last4, brand=brand, | ||||
|             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) | ||||
|         return instance | ||||
|  | @ -262,3 +264,33 @@ class UserCardDetail(AssignPermissionsMixin, models.Model): | |||
|                 card_id=card_details['card_id'] | ||||
|             ) | ||||
|         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