import stripe from django.db import models from django.urls import reverse from django.contrib.auth.models import AbstractUser from localflavor.us.us_states import USPS_CHOICES class User(AbstractUser): stripe_id = models.CharField(max_length=255, blank=True) # Shipping address shipping_street_address_1 = models.CharField(max_length=256, blank=True) shipping_street_address_2 = models.CharField(max_length=256, blank=True) shipping_city = models.CharField(max_length=256, blank=True) shipping_state = models.CharField( max_length=2, choices=USPS_CHOICES, blank=True ) shipping_postal_code = models.CharField(max_length=20, blank=True) @property def has_shipping_address(self): if (self.shipping_street_address_1 != '' and self.shipping_street_address_2 != '' and self.shipping_city != '' and self.shipping_state != '' and self.shipping_postal_code != ''): return True return False def get_or_create_stripe_id(self): if not self.stripe_id: response = stripe.Customer.create( name=self.first_name + ' ' + self.last_name, email=self.email ) self.stripe_id = response['id'] self.save() return self.stripe_id