File: //home/arjun/projects/aigenerator/AI-LG-backend/Ai_logo_generation/authorization/models.py
from datetime import timedelta
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
import uuid
from django.contrib.auth.models import AbstractUser
from django.conf import settings
class CustomUser(AbstractUser):
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
stripe_customer_id = models.CharField(max_length=255, blank=True, null=True)
is_verified = models.BooleanField(default='False')
is_login_verified = models.BooleanField(default='False')
profile_image = models.CharField(max_length=255, blank=True, null=True)
is_deleted = models.BooleanField(default=False)
deleted_at = models.DateTimeField(null=True, blank=True)
groups = models.ManyToManyField(
'auth.Group',
related_name='customuser_set', # Change this as needed
blank=True,
)
user_permissions = models.ManyToManyField(
'auth.Permission',
related_name='customuser_set', # Change this as needed
blank=True,
)
email_sent_for_3d_cards = models.BooleanField(default=True)
def __str__(self) -> str:
return self.email
class PasswordResetRequest(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
token = models.CharField(max_length=255, unique=True)
created_at = models.DateTimeField(auto_now_add=True)
expires_at = models.DateTimeField()
def is_expired(self):
return timezone.now() > self.expires_at
class VerificationMailRequest(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
otp = models.CharField(max_length=6, null=True, blank=True)
created_at = models.DateTimeField(auto_now=True)
def is_expired(self):
return (timezone.now() - self.created_at) > timedelta(minutes=5)
class Device(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
device_token = models.CharField(max_length=255) # Ensure unique device tokens
last_login = models.DateTimeField(auto_now=True)
expiration_date = models.DateTimeField() # To track when the device token expires
def is_expired(self):
"""Check if the device token has expired."""
return timezone.now() > self.expiration_date
def __str__(self):
return f"{self.user.email} - {self.device_token}"