rename rapid functions

This commit is contained in:
Ross
2021-07-07 08:38:22 +01:00
parent e5a19130ba
commit c2888ca237
17 changed files with 72 additions and 54 deletions
+11 -11
View File
@@ -130,7 +130,7 @@ class AnatomyQuestion(models.Model):
def __str__(self):
# Get first answer
return "{} [{}, {}]".format(
self.GetPrimaryAnswer(), self.modality, self.structure
self.get_primary_answer(), self.modality, self.structure
)
# Get associated exams
e = self.exams.all().values_list("name", flat=True)
@@ -146,19 +146,19 @@ class AnatomyQuestion(models.Model):
def get_absolute_url(self):
return reverse("anatomy:question_detail", kwargs={"pk": self.pk})
def GetPrimaryAnswer(self):
def get_primary_answer(self):
if len(self.answers.filter(proposed=False)) > 0:
return self.answers.filter(proposed=False).first().answer
else:
return "None yet..."
def GetExams(self):
def get_exams(self):
e = self.exams.all().values_list("name", flat=True)
exams = ", ".join(e)
return exams
def GetUnmarkedAnswersString(self):
unmarked_answers = self.GetUnmarkedAnswers()
def get_unmarked_answer_string(self):
unmarked_answers = self.get_unmarked_answers()
if not unmarked_answers:
return "No answers to mark"
@@ -168,18 +168,18 @@ class AnatomyQuestion(models.Model):
)
)
def GetUnmarkedAnswers(self):
def get_unmarked_answers(self):
user_answers = set(
[i.answer_compare for i in self.cid_user_answers.all()]
)
unmarked_answers = user_answers - self.GetMarkedAnswers()
unmarked_answers = user_answers - self.get_marked_answers()
return unmarked_answers
def GetUnmarkedAnswerCount(self):
return len(self.GetUnmarkedAnswers())
def get_unmarked_answer_count(self):
return len(self.get_unmarked_answers())
def GetMarkedAnswers(self):
def get_marked_answers(self):
return set(
[
i.answer_compare
@@ -350,7 +350,7 @@ class CidUserAnswer(models.Model):
except (Exam.DoesNotExist, KeyError) as e:
exam = "None"
return "{}/{}/{}: {}".format(
exam, self.cid, self.question.GetPrimaryAnswer(), self.answer
exam, self.cid, self.question.get_primary_answer(), self.answer
)
def save(self, *args, **kwargs):
+1 -1
View File
@@ -31,7 +31,7 @@
</a>
{{ question.description }}
<br />
{{ question.question_type }}: {{ question.GetPrimaryAnswer }}
{{ question.question_type }}: {{ question.get_primary_answer }}
<br />
Modality: {{ question.modality }}, <a href="{% url 'anatomy:question_detail' pk=question.pk %}">View</a>, <a href="{% url 'anatomy:mark' pk=exam.pk sk=forloop.counter0 %}">Mark</a>
</li>
+2 -2
View File
@@ -12,8 +12,8 @@
<ul id="question-mark-list">
{% for question in questions.all %}
<li data-markcount={{question.GetUnmarkedAnswerCount}}><a href="{% url 'anatomy:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
{{ question }}</a><br /> {{ question.GetUnmarkedAnswersString }}</li>
<li data-markcount={{question.get_unmarked_answer_count}}><a href="{% url 'anatomy:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
{{ question }}</a><br /> {{ question.get_unmarked_answer_string }}</li>
{% endfor %}
</ul>
</div>
@@ -29,7 +29,7 @@
<div class="date">
Created: {{ question.created_date }}
</div>
<h1>{{ question.GetPrimaryAnswer }}</h1>
<h1>{{ question.get_primary_answer }}</h1>
<h2>{{question.question_type}}</h2>
Answers (score): {% for answer in question.answers.all %}
{{ answer }} ({{answer.status}}),
+2 -2
View File
@@ -333,7 +333,7 @@ def mark(request, pk, sk):
# i.answer.lower() for i in question.incorrect_answers.all()
# ]
unmarked_user_answers = question.GetUnmarkedAnswers()
unmarked_user_answers = question.get_unmarked_answers()
if request.method == "POST":
@@ -576,7 +576,7 @@ def exam_scores_cid_user(request, pk, sk):
answer_score = user_answer.get_answer_score()
correct_answer = q.GetPrimaryAnswer()
correct_answer = q.get_primary_answer()
if not exam.publish_results:
correct_answer = "*****"
+1 -1
View File
@@ -53,7 +53,7 @@ class Sign(tagulous.models.TagModel):
class ExamBase(models.Model):
name = models.CharField(max_length=200)
name = models.CharField(max_length=200, help_text="Name of the exam")
#exam_questions = SortedManyToManyField(Long, related_name="exams", blank="true")
active = models.BooleanField(
@@ -0,0 +1,18 @@
# Generated by Django 3.2.4 on 2021-07-06 19:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('longs', '0036_alter_exam_exam_mode'),
]
operations = [
migrations.AlterField(
model_name='exam',
name='time_limit',
field=models.IntegerField(default=4500, help_text='Exam time limit (in seconds). Default is 4500 seconds (75 minutes)'),
),
]
+8 -8
View File
@@ -145,12 +145,12 @@ class Long(models.Model):
examinations = [series.get_examination() for series in self.series.all()]
return "{} : {}".format(self.description, ", ".join(examinations))
def GetExams(self):
def get_exams(self):
e = self.exams.all().values_list("name", flat=True)
exams = ", ".join(e)
return exams
def GetImages(self, feedback=False):
def get_images(self, feedback=False):
qs = self.images.all()
if not feedback:
@@ -160,16 +160,16 @@ class Long(models.Model):
return images
def GetImageUrls(self):
def get_image_urls(self):
return ",".join(
["https://penracourses.org.uk{}".format(i.url) for i in self.GetImages()]
["https://penracourses.org.uk{}".format(i.url) for i in self.get_images()]
)
def GetUnmarkedAnswerCount(self):
def get_unmarked_answer_count(self):
answers = self.cid_user_answers.all()
return len([ans for ans in answers if not ans.is_marked()])
def GetUnmarkedAnswers(self):
def get_unmarked_answers(self):
answers = self.cid_user_answers.all()
return [ans for ans in answers if not ans.is_marked()]
@@ -266,7 +266,7 @@ class Long(models.Model):
# def GetNonFeedbackQuestionImages(self):
# return self.GetImages()
# return self.get_images()
def test_image_validator(file):
@@ -527,7 +527,7 @@ class Exam(ExamBase):
exam_questions = SortedManyToManyField(Long, related_name="exams", blank="true")
time_limit = models.IntegerField(
help_text="Exam time limit (in seconds). Default is 4500 secondse (75 minutes)",
help_text="Exam time limit (in seconds). Default is 4500 seconds (75 minutes)",
default=4500,
)
@@ -40,7 +40,7 @@
<p class="pre-whitespace"><b>Mark Scheme:</b> <pre>{{ question.mark_scheme }}</pre></p>
</div>
</p>
<p><b>Exam(s):</b> {{question.GetExams}}</p>
<p><b>Exam(s):</b> {{question.get_exams}}</p>
</div>
<div>
Notes:
+2 -2
View File
@@ -12,8 +12,8 @@
<ul id="question-mark-list">
{% for question in questions.all %}
<li data-markcount={{question.GetUnmarkedAnswerCount}}><a href="{% url 'longs:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
{{ question }}</a><br /> Answers to mark: {{question.GetUnmarkedAnswerCount}}</li>
<li data-markcount={{question.get_unmarked_answer_count}}><a href="{% url 'longs:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
{{ question }}</a><br /> Answers to mark: {{question.get_unmarked_answer_count}}</li>
{% endfor %}
</ul>
</div>
+1 -1
View File
@@ -655,7 +655,7 @@ def mark_answer(request, pk, sk, tk):
raise Http404("User answer does not exist")
try:
unmarked = question.GetUnmarkedAnswers()
unmarked = question.get_unmarked_answers()
next_unmarked_id = unmarked[0].cid
if next_unmarked_id == tk:
next_unmarked_id = unmarked[1].cid
+16 -16
View File
@@ -216,7 +216,7 @@ class Rapid(models.Model):
lat = self.laterality
return "{} / {} {}".format(exams, lat, n)
def GetPrimaryAnswer(self):
def get_primary_answer(self):
if self.normal:
return "Normal"
elif len(self.answers.filter(proposed=False)) > 0:
@@ -224,13 +224,13 @@ class Rapid(models.Model):
else:
return "None yet..."
def GetExams(self):
def get_exams(self):
e = self.exams.all().values_list("name", flat=True)
exams = ", ".join(e)
return exams
def GetUnmarkedAnswersString(self):
unmarked_answers = self.GetUnmarkedAnswers()
def get_unmarked_answer_string(self):
unmarked_answers = self.get_unmarked_answers()
if not unmarked_answers:
return "No answers to mark"
@@ -240,7 +240,7 @@ class Rapid(models.Model):
)
)
def GetUnmarkedAnswers(self):
def get_unmarked_answers(self):
# If normal no answers to mark
if self.normal:
return []
@@ -248,14 +248,14 @@ class Rapid(models.Model):
user_answers = set(
[i.answer_compare for i in self.cid_user_answers.all() if i.normal == False]
)
unmarked_answers = user_answers - self.GetMarkedAnswers()
unmarked_answers = user_answers - self.get_marked_answers()
return unmarked_answers
def GetUnmarkedAnswerCount(self):
return len(self.GetUnmarkedAnswers())
def get_unmarked_answer_count(self):
return len(self.get_unmarked_answers())
def GetMarkedAnswers(self):
def get_marked_answers(self):
return set(
[
i.answer_compare
@@ -276,7 +276,7 @@ class Rapid(models.Model):
marked_answers = correct_answers | half_mark_answers | incorrect_answers
return marked_answers
def GetCorrectUnstrippedAnswers(self):
def get_correct_unstripped_answers(self):
return set(
[
str(i)
@@ -285,7 +285,7 @@ class Rapid(models.Model):
]
)
def GetImages(self, feedback=False):
def get_images(self, feedback=False):
qs = self.images.all()
if not feedback:
@@ -295,10 +295,10 @@ class Rapid(models.Model):
return images
def GetImageUrls(self):
return ",".join(["https://penracourses.org.uk{}".format(i.url) for i in self.GetImages()])
def get_image_urls(self):
return ",".join(["https://penracourses.org.uk{}".format(i.url) for i in self.get_images()])
#def GetNonFeedbackQuestionImages(self):
#return self.GetImages()
#return self.get_images()
class RapidImage(models.Model):
@@ -427,7 +427,7 @@ class Exam(ExamBase):
if not self.exam_mode:
exam_questions[q.id]["normal"] = q.normal
exam_questions[q.id]["feedback_images"] = feedback_images
exam_questions[q.id]["answers"] = list(q.GetCorrectUnstrippedAnswers())
exam_questions[q.id]["answers"] = list(q.get_correct_unstripped_answers())
#if feedback_images:
@@ -482,7 +482,7 @@ class CidUserAnswer(models.Model):
except (Exam.DoesNotExist, KeyError) as e:
exam = "None"
return "{}/{}/{}: {}".format(
exam, self.cid, self.question.GetPrimaryAnswer(), self.answer
exam, self.cid, self.question.get_primary_answer(), self.answer
)
def save(self, *args, **kwargs):
+2 -2
View File
@@ -27,14 +27,14 @@
<li data-question_pk={{question.pk}}>
<a href="{% url 'rapids:exam_question_detail' pk=exam.pk sk=forloop.counter0 %}">
{% for image in question.GetImages %}
{% for image in question.get_images %}
<img src="{{ image|thumbnail_url:'exam-list' }}" alt="thumbail" />
{% endfor %}
</a>
{% if not question.normal %}
<b>Abnormality:</b> {{ question.get_abnormalities }} <b>Region:</b> {{ question.get_regions }}
<br />
{{ question.GetPrimaryAnswer }}
{{ question.get_primary_answer }}
{% else %}
<b>Normal</b>
{% endif %}
+1 -1
View File
@@ -13,7 +13,7 @@ Answers will be automatically marked.
Answers marked as normal will be automatically marked.<br/>
Region: {{ question.get_regions }}, Abnormalities: {{ question.get_abnormalities }}
{% endif %}
<div id="single-dicom-viewer" class="marking-dicom" data-images="{{question.GetImageUrls}}"
<div id="single-dicom-viewer" class="marking-dicom" data-images="{{question.get_image_urls}}"
data-annotations='{{question.image_annotations}}'>
</div>
<div class="marking">
+2 -2
View File
@@ -12,8 +12,8 @@
<ul id="question-mark-list">
{% for question in questions.all %}
<li data-markcount={{question.GetUnmarkedAnswerCount}}><a href="{% url 'rapids:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
{{ question }}</a><br /> {{ question.GetUnmarkedAnswersString }}</li>
<li data-markcount={{question.get_unmarked_answer_count}}><a href="{% url 'rapids:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
{{ question }}</a><br /> {{ question.get_unmarked_answer_string }}</li>
{% endfor %}
</ul>
</div>
@@ -60,7 +60,7 @@
</ul>
{% endif %}
<div id="single-dicom-viewer" class="dicom-viewer" data-images="{{ question.GetImageUrls }}" data-annotations=''></div>
<div id="single-dicom-viewer" class="dicom-viewer" data-images="{{ question.get_image_urls }}" data-annotations=''></div>
</div>
<script>
+2 -2
View File
@@ -645,7 +645,7 @@ def mark(request, pk, sk):
# i.answer.lower() for i in question.incorrect_answers.all()
# ]
unmarked_user_answers = question.GetUnmarkedAnswers()
unmarked_user_answers = question.get_unmarked_answers()
if request.method == "POST":
@@ -894,7 +894,7 @@ def exam_scores_cid_user(request, pk, sk):
ans = user_answer.answer
answer_score = user_answer.get_answer_score()
correct_answer = q.GetPrimaryAnswer()
correct_answer = q.get_primary_answer()
if not exam.publish_results:
correct_answer = "*****"