Files
penracourses/oef/models.py
T
Ross 2c1043c2dc .
2024-10-10 21:45:35 +01:00

75 lines
2.1 KiB
Python

from django.db import models
from django.urls import reverse
# Create your models here.
class Entry(models.Model):
modality = models.CharField(max_length=200)
exam_code = models.CharField(max_length=50)
exam_name = models.CharField(max_length=200)
questions = models.TextField()
questions_original = models.TextField()
oef_name = models.CharField(max_length=200, blank=True)
comments = models.TextField(blank=True)
inactive = models.BooleanField(default=False)
#format = models.ForeignKey('Formats', on_delete=models.CASCADE, null=True, blank=True)
def __str__(self):
return self.exam_name
def get_absolute_url(self):
return reverse("oef:entry_detail", kwargs={"pk": self.pk})
def clean(self) -> None:
self.questions = self.questions.replace("\r\n", "\n")
return super().clean()
def save(self, *args, **kwargs):
self.questions = self.questions.replace("\r\n", "\n")
return super().save(*args, **kwargs)
class Formats(models.Model):
name = models.CharField(max_length=200)
format = models.TextField(blank=True)
inherits = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
specialties = models.ManyToManyField('Specialty', blank=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("oef:format_update", kwargs={"pk": self.pk})
def clean(self) -> None:
self.format = self.format.replace("\r\n", "\n")
return super().clean()
def save(self, *args, **kwargs):
self.format = self.format.replace("\r\n", "\n")
return super().save(*args, **kwargs)
def get_format(self):
formats = [self.format]
while self.inherits:
self = self.inherits
formats.append(self.format)
formats.reverse()
return "\n".join(formats)
def get_entries(self):
return Entry.objects.filter(questions__icontains=self.get_format(), inactive=False)
class Specialty(models.Model):
name = models.CharField(max_length=200)
def __str__(self):
return self.name