Files
Promocode-API/solution/apps/business/models.py
T

42 lines
1.1 KiB
Python

from datetime import timedelta
import jwt
from django.conf import settings
from django.core.validators import MinLengthValidator, RegexValidator
from django.db import models
from django.utils import timezone
from apps.core.models import BaseModel
class Business(BaseModel):
name = models.CharField(max_length=50, validators=[MinLengthValidator(5)])
email = models.EmailField(
unique=True,
max_length=120,
validators=[MinLengthValidator(8)],
)
password = models.CharField(
max_length=60,
validators=[
RegexValidator(
r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$",
),
],
)
token_version = models.BigIntegerField(default=0)
def __str__(self) -> str:
return self.name
def generate_token(self) -> str:
return jwt.encode(
{
"business_id": str(self.id),
"token_version": self.token_version,
"exp": timezone.now() + timedelta(hours=24),
},
settings.SECRET_KEY,
algorithm="HS256",
)