75 lines
2.1 KiB
Python
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)
|