ecommerce/billing/models.py
2018-09-10 23:16:35 +03:00

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)