Further candidate management improvements
This commit is contained in:
+46
-10
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user