numerous updates

This commit is contained in:
Ross
2022-05-20 20:26:02 +01:00
parent 0373b22e78
commit 77ccdbc92a
246 changed files with 22615 additions and 2409 deletions
+48 -17
View File
@@ -26,7 +26,16 @@ from helpers.images import image_as_base64
from django.contrib.contenttypes.fields import GenericRelation
from generic.models import CidUser, CidUserGroup, Site, Condition, Sign, ExamBase, QuestionNote
from generic.models import (
CidUser,
CidUserGroup,
Site,
Condition,
Sign,
ExamBase,
QuestionNote,
UserUserGroup,
)
import reversion
@@ -245,7 +254,10 @@ class Rapid(models.Model):
if self.normal:
return "Normal"
else:
if hasattr(self, "prefetched_primary_answer") and self.prefetched_primary_answer:
if (
hasattr(self, "prefetched_primary_answer")
and self.prefetched_primary_answer
):
ans = self.prefetched_primary_answer[0]
else:
ans = self.answers.filter(
@@ -257,7 +269,7 @@ class Rapid(models.Model):
else:
return ans.answer
#def get_primary_answer(self):
# def get_primary_answer(self):
# if self.normal:
# return "Normal"
# elif (
@@ -302,7 +314,6 @@ class Rapid(models.Model):
marked_answers = self.get_marked_answers()
unmarked_answers = set(
[
i
@@ -449,7 +460,7 @@ class Rapid(models.Model):
feedback_images.append(
"{}/{}".format(settings.REMOTE_URL, i.image.url)
)
#feedback_images.append("{}/{}".format(settings.REMOTE_URL, i.image.url))
# feedback_images.append("{}/{}".format(settings.REMOTE_URL, i.image.url))
else:
if based:
images.append(image_as_base64(i.image))
@@ -471,7 +482,6 @@ class Rapid(models.Model):
if feedback:
json["feedback"] = self.feedback
return json
def anonymise_images(self):
@@ -487,6 +497,7 @@ class Rapid(models.Model):
except pydicom.errors.InvalidDicomError:
pass
# reversion.register(Rapid, follow=["images"])
# @reversion.register
class RapidImage(models.Model):
@@ -501,7 +512,12 @@ class RapidImage(models.Model):
feedback_image = models.BooleanField(default=False)
filename = models.CharField(max_length=255, null=True, blank=True, help_text="Name of the original file when uploaded")
filename = models.CharField(
max_length=255,
null=True,
blank=True,
help_text="Name of the original file when uploaded",
)
description = models.CharField(max_length=255, null=True, blank=True)
@@ -591,11 +607,25 @@ class Exam(ExamBase):
related_name="rapid_exam_author",
)
valid_users = models.ManyToManyField(
valid_cid_users = models.ManyToManyField(
CidUser, blank=True, related_name="rapid_exams"
)
cid_user_groups = models.ManyToManyField(CidUserGroup, blank=True, help_text="These groups define which candidates are able to be added to the exams/collection.")
valid_user_users = models.ManyToManyField(
settings.AUTH_USER_MODEL, blank=True, related_name="user_rapid_exams"
)
cid_user_groups = models.ManyToManyField(
CidUserGroup,
blank=True,
help_text="These groups define which candidates are able to be added to the exams/collection.",
)
user_user_groups = models.ManyToManyField(
UserUserGroup,
blank=True,
help_text="These groups define which candidates are able to be added to the exams/collection.",
)
def get_normal_abnormal_breakdown(self):
# Inefficient but more extendible
@@ -638,7 +668,7 @@ class Exam(ExamBase):
images.append(image_as_base64(i.image))
else:
images.append("{}/{}".format(settings.REMOTE_URL, i.image.url))
if i.description:
image_titles.append(i.description)
else:
@@ -664,8 +694,6 @@ class Exam(ExamBase):
if any(image_titles):
exam_questions[q.id]["image_titles"] = image_titles
# if feedback_images:
# exam_questions[q.id]["feedback_image"] = feedback_images
@@ -709,10 +737,12 @@ class CidUserAnswer(models.Model):
)
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
blank=True,
null=True, # , related_name="user_rapid_user_answers"
)
# Each user answer is associated with a particular exam
exam = models.ForeignKey(
Exam, related_name="cid_user_answers", on_delete=models.CASCADE, null=True
@@ -752,7 +782,9 @@ class CidUserAnswer(models.Model):
self.answer = self.answer.strip()
s = self.answer.lower()
s = s.translate(str.maketrans("", "", string.punctuation.replace("#", ""))).strip()
s = s.translate(
str.maketrans("", "", string.punctuation.replace("#", ""))
).strip()
self.answer_compare = s
else:
@@ -805,7 +837,6 @@ class CidUserAnswer(models.Model):
self.save()
return 0
# TODO: this should be cleaned up as we don't want duplicates...
# try:
# marked_ans = q.answers.get(answer_compare__iexact=ans)
@@ -825,4 +856,4 @@ class CidUserAnswer(models.Model):
elif marked_ans.status == Answer.MarkOptions.INCORRECT:
mark = 0
return mark
return mark