HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
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}"