bendwidth / django-backend / user / models.py
models.py
Raw
from django.db import models
from django.contrib.auth.models import User
from .constants import LOCALES_BCP_47, LANGUAGE_CODES
from django.utils import timezone

# Model to store additional user information
class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    # Additional fields based on your form
    full_name = models.CharField(max_length=255)
    college_name = models.CharField(max_length=255)
    major = models.CharField(max_length=255)
    study_level = models.CharField(max_length=50)  # Freshman, Sophomore, etc.
    country = models.CharField(max_length=100)
    courses = models.TextField()  # Assuming this can be a long text
    age = models.IntegerField()
    gender = models.CharField(max_length=50)
    interests = models.TextField()
    skills = models.TextField()
    hobbies = models.TextField()
    preferred_language = models.CharField(max_length=50, choices=LANGUAGE_CODES, default="en")
    is_tutor = models.BooleanField(default=None, blank=True, null=True)
    is_student = models.BooleanField(default=None, blank=True, null=True)
    grad_date = models.DateField()
    
    def __str__(self):
        return self.user.username
    
class Invitation(models.Model):
    STATUS = [
        (0, "pending"),
        (1, "denied"),
        (2, "accepted")
        ]
    status = models.CharField(max_length=50, default="pending", choices=STATUS)
    uuid = models.CharField(max_length = 200)
    sender = models.ForeignKey(UserProfile, max_length=100, related_name="invitations", on_delete=models.DO_NOTHING)
    receivers = models.CharField(max_length=50) # string with list of potential receivers id's.
    timestamp = models.DateTimeField()

    def save(self, *args, **kwargs):
        self.timestamp = timezone.now()  # Manually set the current time
        super().save(*args, **kwargs)