Source code for accounts.models

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.core.validators import RegexValidator, MaxValueValidator, MinValueValidator
from datetime import datetime, timedelta


[docs] class User(AbstractUser): email = models.EmailField(unique=True) phone_number_regex = RegexValidator( regex=r"^\d{10}$", message="Phone number must be 10 digits." ) phone_number = models.CharField( validators=[phone_number_regex], max_length=10, null=True ) gstin_validator = RegexValidator( regex=r"^\d{2}[A-Z]{5}\d{4}[A-Z]{1}\d[Z]{1}[A-Z\d]{1}$", message="Enter a valid GSTIN (Goods and Services Tax Identification Number).", ) gstin = models.CharField(max_length=15, validators=[gstin_validator], unique=True) company_name = models.CharField(max_length=255) address = models.TextField() USER_ROLE_CHOICES = [ ("procurement_officer", "Procurement Officer"), ("vendor", "Vendor"), ] user_role = models.CharField(max_length=255, choices=USER_ROLE_CHOICES) def __str__(self): return str(self.username)
[docs] class Vendor(models.Model): vendor_certified = models.BooleanField(default=False) VENDOR_TYPE_CHOICES = [ ("supplier", "Supplier"), ("manufacturer", "Manufacturer"), ("service_provider", "Service Provider"), ] vendor_type = models.CharField(max_length=20, choices=VENDOR_TYPE_CHOICES) contract_expiry_date = models.DateField( default=datetime.now() + timedelta(days=5 * 365) ) vendor_rating = models.FloatField( validators=[MinValueValidator(0.0), MaxValueValidator(5.0)], default=0.0 ) total_ratings = models.PositiveIntegerField(default=0) user = models.OneToOneField(User, on_delete=models.CASCADE) def __str__(self): return str(self.user.username)