feat: added business models, implemented business signup and signin

This commit is contained in:
ITQ
2025-01-20 16:09:37 +03:00
parent 2eef92b617
commit 9ae9b46780
19 changed files with 272 additions and 2 deletions
View File
+5
View File
@@ -0,0 +1,5 @@
from django.contrib import admin
from apps.business.models import Business
admin.site.register(Business)
+6
View File
@@ -0,0 +1,6 @@
from django.apps import AppConfig
class BusinessConfig(AppConfig):
name = "apps.business"
label = "business"
@@ -0,0 +1,29 @@
# Generated by Django 5.1.5 on 2025-01-20 11:21
import django.core.validators
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Business',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('name', models.CharField(max_length=50, validators=[django.core.validators.MinLengthValidator(5)])),
('email', models.EmailField(max_length=120, unique=True, validators=[django.core.validators.MinLengthValidator(8)])),
('password', models.CharField(max_length=60, validators=[django.core.validators.RegexValidator('^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$')])),
('token_version', models.BigIntegerField(default=0)),
],
options={
'abstract': False,
},
),
]
+37
View File
@@ -0,0 +1,37 @@
import jwt
from django.conf import settings
from django.core.validators import MinLengthValidator, RegexValidator
from django.db import models
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,
},
settings.SECRET_KEY,
algorithm="HS256",
)
View File
+6
View File
@@ -0,0 +1,6 @@
from django.apps import AppConfig
class CoreConfig(AppConfig):
name = "apps.core"
label = "core"
+23
View File
@@ -0,0 +1,23 @@
import uuid
from django.core.exceptions import ValidationError
from django.db import models
from config.errors import UniqueConstraintError
class BaseModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
class Meta:
abstract = True
def save(self, *args, **kwargs) -> None: # noqa: ANN002, ANN003
self.full_clean(validate_unique=False)
try:
self.validate_unique()
except ValidationError as e:
raise UniqueConstraintError(e) from None
super().save(*args, **kwargs)