numerous updates
This commit is contained in:
+48
-17
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user