51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
from django.db import models
|
|
from django.contrib.auth import get_user_model
|
|
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
from accounts.models import GuestEmail
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class BillingProfileManager(models.Manager):
|
|
def new_or_get(self, request):
|
|
created = False
|
|
obj = None
|
|
guest_email_id = request.session.get("guest_email_id")
|
|
if request.user.is_authenticated():
|
|
'logged in user checkout'
|
|
obj, created = self.model.objects.get_or_create(
|
|
user=request.user,
|
|
email=request.user.email
|
|
)
|
|
elif guest_email_id is not None:
|
|
'guest user checkout'
|
|
print(guest_email_id)
|
|
guest_email_obj = GuestEmail.objects.get(id=guest_email_id)
|
|
obj, created = self.model.objects.get_or_create(
|
|
email=guest_email_obj.email
|
|
)
|
|
else:
|
|
pass
|
|
return obj, created
|
|
|
|
|
|
class BillingProfile(models.Model):
|
|
user = models.ForeignKey(User, unique=True, null=True, blank=True)
|
|
email = models.EmailField()
|
|
active = models.BooleanField(default=True)
|
|
time = models.DateTimeField(auto_now_add=True)
|
|
update = models.DateTimeField(auto_now_add=True)
|
|
|
|
objects = BillingProfileManager()
|
|
|
|
def __str__(self):
|
|
return self.email
|
|
|
|
|
|
@receiver(post_save, sender=User)
|
|
def user_create(sender, instance, created, *args, **kwargs):
|
|
if created:
|
|
BillingProfile.objects.get_or_create(user=instance)
|
|
|