Further candidate management improvements

This commit is contained in:
Ross
2022-11-28 15:48:50 +00:00
parent 77687327ea
commit 65b1d2da3c
11 changed files with 219 additions and 59 deletions
+46 -10
View File
@@ -422,16 +422,16 @@ class QuestionNote(models.Model):
def get_short_str(self):
return f"{self.note_type} - {self.note}"
EXAM_TYPES = (
("Physics", "physics_exams"),
("Rapids", "rapid_exams"),
("SBAs", "sba_exams"),
("Anatomy", "anatomy_exams"),
("Longs", "longs_exams"),
("CaseCollection", "casecollection_exams"),
)
class CidUser(models.Model):
EXAM_TYPES = (
("Physics", "physics_exams"),
("Rapids", "rapid_exams"),
("SBAs", "sba_exams"),
("Anatomy", "anatomy_exams"),
("Longs", "longs_exams"),
("CaseCollection", "casecollection_exams"),
)
cid = models.IntegerField(blank=True, null=True, unique=True)
passcode = models.CharField(blank=True, max_length=50)
@@ -463,13 +463,13 @@ class CidUser(models.Model):
def get_cid_exams(self):
available_exams = []
for n, t in self.EXAM_TYPES:
for n, t in EXAM_TYPES:
exam_rel = getattr(self, t)
if exam_rel.exists():
exams = exam_rel.filter(exam_mode=True, archive=False).order_by("name")
available_exams.append((n, exams))
return available_exams
return dict(available_exams)
def generate_exam_report(self):
exam_list = self.get_cid_exams()
@@ -655,6 +655,13 @@ class CidUserGroup(models.Model):
return reverse("generic:cid_group_update", kwargs={"pk": self.pk})
USER_GROUP_EXAMS = (
("SBAs", "sba_user_user_groups"),
("Physics", "physics_user_user_groups"),
("Anatomy", "anatomy_user_user_groups"),
("Rapids", "rapid_user_user_groups"),
("Longs", "longs_user_user_groups"),
)
class UserUserGroup(models.Model):
name = models.CharField(blank=True, max_length=50, help_text="Name of the User Group")
@@ -675,6 +682,15 @@ class UserUserGroup(models.Model):
s = ", ".join([f"{user.id} - {user.username} ({user.email})" for user in users])
return s
def GetGroupExams(self):
exams = defaultdict(list)
for t, rel in USER_GROUP_EXAMS:
exam_rel = getattr(self, rel)
if exam_rel.exists():
exams[t].extend(exam_rel.all())
return dict(exams)
def get_absolute_url(self):
return reverse("generic:user_group_update", kwargs={"pk": self.pk})
@@ -684,6 +700,15 @@ class UserGrades(models.Model):
def __str__(self):
return self.name
USER_EXAM_TYPES = (
("Physics", "user_physics_exams"),
("Rapids", "user_rapid_exams"),
("SBAs", "user_sba_exams"),
("Anatomy", "user_anatomy_exams"),
("Longs", "user_longs_exams"),
#("CaseCollection", "user_casecollection_exams"),
)
class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
supervisor = models.ForeignKey("Supervisor", on_delete=models.SET_NULL, blank=True, null=True, related_name="trainee")
@@ -700,6 +725,17 @@ class UserProfile(models.Model):
username = property(getusername)
def get_exams(self):
available_exams = defaultdict(list)
for n, t in USER_EXAM_TYPES:
exam_rel = getattr(self.user, t)
if exam_rel.exists():
exams = exam_rel.filter(exam_mode=True, archive=False).order_by("name")
available_exams[n].extend(exams)
return dict(available_exams)
class Supervisor(models.Model):
"""Model to hold individual supervisor details (email and name)