Files
penracourses/oef/models.py
T
Ross fad940bcd4 .
2024-11-11 13:59:48 +00:00

75 lines
2.1 KiB
Python

from django.db import models
from django.urls import reverse
from atlas.models import Subspecialty
# 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)
def get_current_format(self):
return Formats.objects.filter(format=self.questions).first()
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(Subspecialty, 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)