from django.db import models from django.db.models import Q from django.contrib.auth.models import AbstractUser from django.contrib.auth import authenticate # Create your models here. class SchoolID(models.Model): school_index = models.CharField(max_length=8, db_index=True, unique=True) def __str__(self): return self.school_index class User(AbstractUser): class Roles(models.TextChoices): COMMON = 'common', 'Common' PROFESSOR = 'prof', 'Professor' school_index = models.ForeignKey(SchoolID, on_delete=models.CASCADE) role = models.CharField(max_length=20, choices=Roles, default=Roles.COMMON) @staticmethod def authenticate(request, username_or_schoolid, password): user = User.objects.filter(Q(username=username_or_schoolid) | Q(school_index__school_index=username_or_schoolid)).first() if not user: return False return authenticate(request, username=user.username, password=password)