from django.contrib.auth.models import AbstractUser, UserManager from django.db import models from tenants.models import Tenant from tenants.managers import TenantScopedManager class User(AbstractUser): ROLE_CHOICES = [ ('super_admin', 'Super Admin'), ('institution_admin', 'Institution Admin'), ('teacher', 'Teacher'), ('student', 'Student'), ('project_manager', 'Project Manager'), ] tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, related_name='users', null=True, blank=True) role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='student') objects = UserManager() # Default manager for auth operations tenant_objects = TenantScopedManager() # Custom manager for tenant filtering def __str__(self): return self.username