SkoolOS/Website/api/models.py

97 lines
4.3 KiB
Python

from django.db import models
from django.contrib.auth.models import User
import secrets
class Student(models.Model):
user = models.OneToOneField(User, blank=True, on_delete=models.CASCADE)
ion_user = models.CharField(max_length=100, primary_key=True)
grade = models.IntegerField(default=0, blank=True)
log = models.TextField(default="", blank=True)
git=models.CharField(default="", max_length=100, blank=True)
log = models.TextField(default="", blank=True)
repo=models.URLField(default="", blank=True)
classes=models.CharField(max_length=100, default="", blank=True)
added_to=models.CharField(max_length=100, default="", blank=True)
completed=models.TextField(default="", blank=True)
def save(self, *args, **kwargs):
super(Student, self).save(*args, **kwargs)
def __str__(self):
return f"{self.user.first_name} {self.user.last_name} ({self.user.username})"
class Assignment(models.Model):
owner = models.ForeignKey(User, null=True, blank=True, related_name='aowner', on_delete=models.CASCADE)
name=models.CharField(max_length=100, primary_key=True)
due_date=models.CharField(max_length=100, default="", blank=True)
# files = models.ManyToManyField(DefFiles)
files=models.CharField(max_length=100, default="", blank=True)
path=models.CharField(max_length=100, default="", blank=True)
classes=models.CharField(max_length=100, default="", blank=True)
teacher=models.CharField(max_length=100, default="", blank=True)
def __str__(self):
return f'{self.name}'
class Class(models.Model):
owner = models.ForeignKey(User, null=True, blank=True, related_name='cowner', on_delete=models.CASCADE)
teacher = models.CharField(max_length=100, blank=True)
subject = models.CharField(max_length=50, blank=True)
period = models.PositiveIntegerField(null=True, blank=True, default=0)
name = models.CharField(primary_key=True, max_length=100)
id = models.CharField(max_length=8, blank=True, null=True)
description = models.CharField(default="Class Description", max_length=500, blank=True)
repo=models.URLField(default="", blank=True)
path=models.CharField(max_length=100, default="", blank=True)
assignments=models.ManyToManyField(Assignment, blank=True)
default_file=models.CharField(max_length=100, default="", blank=True)
confirmed=models.ManyToManyField(Student, blank=True, related_name='confirmed')
unconfirmed=models.ManyToManyField(Student, blank=True, related_name='unconfirmed')
# assignments = models.ManyToManyField(Assignment, default="")
# default_file = models.ManyToManyField(DefFiles)
def save(self, *args, **kwargs):
id = self.id
if not id:
id = secrets.token_urlsafe()[:8].lower()
while Class.objects.filter(id=id).exclude(pk=self.pk).exists():
id = secrets.token_urlsafe()[:8].lower()
self.id = id
return super(Class, self).save(*args, **kwargs)
def __str__(self):
return f"{self.name}"
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
classes=models.ManyToManyField(Class, blank=True, related_name='classes')
git=models.CharField(max_length=100, default="", blank=True)
ion_user=models.CharField(primary_key=True, max_length=100)
def __str__(self):
return f"{self.user.first_name} {self.user.last_name} ({self.user.username})"
def save(self, *args, **kwargs):
super(Teacher, self).save(*args, **kwargs)
# class Student(models.Model):
# user = models.OneToOneField(User, on_delete=models.CASCADE)
# ion_user=models.CharField(primary_key=True, max_length=100)
# grade = models.IntegerField(default=0, blank=True)
# git=models.CharField(default="", max_length=100, blank=True)
# repo=models.URLField(default="", blank=True)
# classes=models.CharField(max_length=100, default="", blank=True)
# added_to=models.CharField(max_length=100, default="", blank=True)
# completed=models.TextField(default="", blank=True)
class DefFiles(models.Model):
name=models.CharField(max_length=100)
path=models.CharField(max_length=100)
assignment=models.CharField(max_length=100, default="")
classes=models.CharField(max_length=100)
teacher=models.CharField(max_length=100)