Spaces:
Sleeping
Sleeping
| from django.conf import settings | |
| from django.contrib.auth.models import AbstractUser | |
| from django.core.validators import MinValueValidator, MaxValueValidator | |
| from django.db import models | |
| class User(AbstractUser): | |
| ROLE_CHOICES = [ | |
| ('STUDENT', 'Student'), | |
| ('ADMIN', 'Admin'), | |
| ] | |
| name = models.CharField(max_length=255, blank=True) | |
| email = models.EmailField(unique=True) | |
| role_type = models.CharField(max_length=20, choices=ROLE_CHOICES, default='STUDENT') | |
| created_at = models.DateTimeField(auto_now_add=True) | |
| USERNAME_FIELD = 'email' | |
| REQUIRED_FIELDS = ['username', 'name'] | |
| def __str__(self): | |
| return self.email | |
| class UserProfile(models.Model): | |
| user = models.OneToOneField( | |
| settings.AUTH_USER_MODEL, | |
| on_delete=models.CASCADE, | |
| related_name='profile' | |
| ) | |
| degree = models.CharField(max_length=255, blank=True) | |
| semester = models.IntegerField( | |
| null=True, blank=True, | |
| validators=[MinValueValidator(1), MaxValueValidator(12)] | |
| ) | |
| interests = models.TextField(blank=True) | |
| bio = models.TextField(blank=True) | |
| updated_at = models.DateTimeField(auto_now=True) | |
| def __str__(self): | |
| return f'Profile of {self.user.email}' | |