rename rapid functions
This commit is contained in:
+11
-11
@@ -130,7 +130,7 @@ class AnatomyQuestion(models.Model):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
# Get first answer
|
# Get first answer
|
||||||
return "{} [{}, {}]".format(
|
return "{} [{}, {}]".format(
|
||||||
self.GetPrimaryAnswer(), self.modality, self.structure
|
self.get_primary_answer(), self.modality, self.structure
|
||||||
)
|
)
|
||||||
# Get associated exams
|
# Get associated exams
|
||||||
e = self.exams.all().values_list("name", flat=True)
|
e = self.exams.all().values_list("name", flat=True)
|
||||||
@@ -146,19 +146,19 @@ class AnatomyQuestion(models.Model):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse("anatomy:question_detail", kwargs={"pk": self.pk})
|
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:
|
if len(self.answers.filter(proposed=False)) > 0:
|
||||||
return self.answers.filter(proposed=False).first().answer
|
return self.answers.filter(proposed=False).first().answer
|
||||||
else:
|
else:
|
||||||
return "None yet..."
|
return "None yet..."
|
||||||
|
|
||||||
def GetExams(self):
|
def get_exams(self):
|
||||||
e = self.exams.all().values_list("name", flat=True)
|
e = self.exams.all().values_list("name", flat=True)
|
||||||
exams = ", ".join(e)
|
exams = ", ".join(e)
|
||||||
return exams
|
return exams
|
||||||
|
|
||||||
def GetUnmarkedAnswersString(self):
|
def get_unmarked_answer_string(self):
|
||||||
unmarked_answers = self.GetUnmarkedAnswers()
|
unmarked_answers = self.get_unmarked_answers()
|
||||||
|
|
||||||
if not unmarked_answers:
|
if not unmarked_answers:
|
||||||
return "No answers to mark"
|
return "No answers to mark"
|
||||||
@@ -168,18 +168,18 @@ class AnatomyQuestion(models.Model):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def GetUnmarkedAnswers(self):
|
def get_unmarked_answers(self):
|
||||||
user_answers = set(
|
user_answers = set(
|
||||||
[i.answer_compare for i in self.cid_user_answers.all()]
|
[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
|
return unmarked_answers
|
||||||
|
|
||||||
def GetUnmarkedAnswerCount(self):
|
def get_unmarked_answer_count(self):
|
||||||
return len(self.GetUnmarkedAnswers())
|
return len(self.get_unmarked_answers())
|
||||||
|
|
||||||
def GetMarkedAnswers(self):
|
def get_marked_answers(self):
|
||||||
return set(
|
return set(
|
||||||
[
|
[
|
||||||
i.answer_compare
|
i.answer_compare
|
||||||
@@ -350,7 +350,7 @@ class CidUserAnswer(models.Model):
|
|||||||
except (Exam.DoesNotExist, KeyError) as e:
|
except (Exam.DoesNotExist, KeyError) as e:
|
||||||
exam = "None"
|
exam = "None"
|
||||||
return "{}/{}/{}: {}".format(
|
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):
|
def save(self, *args, **kwargs):
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
</a>
|
</a>
|
||||||
{{ question.description }}
|
{{ question.description }}
|
||||||
<br />
|
<br />
|
||||||
{{ question.question_type }}: {{ question.GetPrimaryAnswer }}
|
{{ question.question_type }}: {{ question.get_primary_answer }}
|
||||||
<br />
|
<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>
|
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>
|
</li>
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
<ul id="question-mark-list">
|
<ul id="question-mark-list">
|
||||||
{% for question in questions.all %}
|
{% for question in questions.all %}
|
||||||
<li data-markcount={{question.GetUnmarkedAnswerCount}}><a href="{% url 'anatomy:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
<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.GetUnmarkedAnswersString }}</li>
|
{{ question }}</a><br /> {{ question.get_unmarked_answer_string }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<div class="date">
|
<div class="date">
|
||||||
Created: {{ question.created_date }}
|
Created: {{ question.created_date }}
|
||||||
</div>
|
</div>
|
||||||
<h1>{{ question.GetPrimaryAnswer }}</h1>
|
<h1>{{ question.get_primary_answer }}</h1>
|
||||||
<h2>{{question.question_type}}</h2>
|
<h2>{{question.question_type}}</h2>
|
||||||
Answers (score): {% for answer in question.answers.all %}
|
Answers (score): {% for answer in question.answers.all %}
|
||||||
{{ answer }} ({{answer.status}}),
|
{{ answer }} ({{answer.status}}),
|
||||||
|
|||||||
+2
-2
@@ -333,7 +333,7 @@ def mark(request, pk, sk):
|
|||||||
# i.answer.lower() for i in question.incorrect_answers.all()
|
# 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":
|
if request.method == "POST":
|
||||||
|
|
||||||
@@ -576,7 +576,7 @@ def exam_scores_cid_user(request, pk, sk):
|
|||||||
|
|
||||||
answer_score = user_answer.get_answer_score()
|
answer_score = user_answer.get_answer_score()
|
||||||
|
|
||||||
correct_answer = q.GetPrimaryAnswer()
|
correct_answer = q.get_primary_answer()
|
||||||
|
|
||||||
if not exam.publish_results:
|
if not exam.publish_results:
|
||||||
correct_answer = "*****"
|
correct_answer = "*****"
|
||||||
|
|||||||
+1
-1
@@ -53,7 +53,7 @@ class Sign(tagulous.models.TagModel):
|
|||||||
|
|
||||||
|
|
||||||
class ExamBase(models.Model):
|
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")
|
#exam_questions = SortedManyToManyField(Long, related_name="exams", blank="true")
|
||||||
|
|
||||||
active = models.BooleanField(
|
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
@@ -145,12 +145,12 @@ class Long(models.Model):
|
|||||||
examinations = [series.get_examination() for series in self.series.all()]
|
examinations = [series.get_examination() for series in self.series.all()]
|
||||||
return "{} : {}".format(self.description, ", ".join(examinations))
|
return "{} : {}".format(self.description, ", ".join(examinations))
|
||||||
|
|
||||||
def GetExams(self):
|
def get_exams(self):
|
||||||
e = self.exams.all().values_list("name", flat=True)
|
e = self.exams.all().values_list("name", flat=True)
|
||||||
exams = ", ".join(e)
|
exams = ", ".join(e)
|
||||||
return exams
|
return exams
|
||||||
|
|
||||||
def GetImages(self, feedback=False):
|
def get_images(self, feedback=False):
|
||||||
qs = self.images.all()
|
qs = self.images.all()
|
||||||
|
|
||||||
if not feedback:
|
if not feedback:
|
||||||
@@ -160,16 +160,16 @@ class Long(models.Model):
|
|||||||
|
|
||||||
return images
|
return images
|
||||||
|
|
||||||
def GetImageUrls(self):
|
def get_image_urls(self):
|
||||||
return ",".join(
|
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()
|
answers = self.cid_user_answers.all()
|
||||||
return len([ans for ans in answers if not ans.is_marked()])
|
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()
|
answers = self.cid_user_answers.all()
|
||||||
return [ans for ans in answers if not ans.is_marked()]
|
return [ans for ans in answers if not ans.is_marked()]
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@ class Long(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
# def GetNonFeedbackQuestionImages(self):
|
# def GetNonFeedbackQuestionImages(self):
|
||||||
# return self.GetImages()
|
# return self.get_images()
|
||||||
|
|
||||||
|
|
||||||
def test_image_validator(file):
|
def test_image_validator(file):
|
||||||
@@ -527,7 +527,7 @@ class Exam(ExamBase):
|
|||||||
exam_questions = SortedManyToManyField(Long, related_name="exams", blank="true")
|
exam_questions = SortedManyToManyField(Long, related_name="exams", blank="true")
|
||||||
|
|
||||||
time_limit = models.IntegerField(
|
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,
|
default=4500,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
<p class="pre-whitespace"><b>Mark Scheme:</b> <pre>{{ question.mark_scheme }}</pre></p>
|
<p class="pre-whitespace"><b>Mark Scheme:</b> <pre>{{ question.mark_scheme }}</pre></p>
|
||||||
</div>
|
</div>
|
||||||
</p>
|
</p>
|
||||||
<p><b>Exam(s):</b> {{question.GetExams}}</p>
|
<p><b>Exam(s):</b> {{question.get_exams}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
Notes:
|
Notes:
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
<ul id="question-mark-list">
|
<ul id="question-mark-list">
|
||||||
{% for question in questions.all %}
|
{% for question in questions.all %}
|
||||||
<li data-markcount={{question.GetUnmarkedAnswerCount}}><a href="{% url 'longs:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
<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.GetUnmarkedAnswerCount}}</li>
|
{{ question }}</a><br /> Answers to mark: {{question.get_unmarked_answer_count}}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+1
-1
@@ -655,7 +655,7 @@ def mark_answer(request, pk, sk, tk):
|
|||||||
raise Http404("User answer does not exist")
|
raise Http404("User answer does not exist")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
unmarked = question.GetUnmarkedAnswers()
|
unmarked = question.get_unmarked_answers()
|
||||||
next_unmarked_id = unmarked[0].cid
|
next_unmarked_id = unmarked[0].cid
|
||||||
if next_unmarked_id == tk:
|
if next_unmarked_id == tk:
|
||||||
next_unmarked_id = unmarked[1].cid
|
next_unmarked_id = unmarked[1].cid
|
||||||
|
|||||||
+16
-16
@@ -216,7 +216,7 @@ class Rapid(models.Model):
|
|||||||
lat = self.laterality
|
lat = self.laterality
|
||||||
return "{} / {} {}".format(exams, lat, n)
|
return "{} / {} {}".format(exams, lat, n)
|
||||||
|
|
||||||
def GetPrimaryAnswer(self):
|
def get_primary_answer(self):
|
||||||
if self.normal:
|
if self.normal:
|
||||||
return "Normal"
|
return "Normal"
|
||||||
elif len(self.answers.filter(proposed=False)) > 0:
|
elif len(self.answers.filter(proposed=False)) > 0:
|
||||||
@@ -224,13 +224,13 @@ class Rapid(models.Model):
|
|||||||
else:
|
else:
|
||||||
return "None yet..."
|
return "None yet..."
|
||||||
|
|
||||||
def GetExams(self):
|
def get_exams(self):
|
||||||
e = self.exams.all().values_list("name", flat=True)
|
e = self.exams.all().values_list("name", flat=True)
|
||||||
exams = ", ".join(e)
|
exams = ", ".join(e)
|
||||||
return exams
|
return exams
|
||||||
|
|
||||||
def GetUnmarkedAnswersString(self):
|
def get_unmarked_answer_string(self):
|
||||||
unmarked_answers = self.GetUnmarkedAnswers()
|
unmarked_answers = self.get_unmarked_answers()
|
||||||
|
|
||||||
if not unmarked_answers:
|
if not unmarked_answers:
|
||||||
return "No answers to mark"
|
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 normal no answers to mark
|
||||||
if self.normal:
|
if self.normal:
|
||||||
return []
|
return []
|
||||||
@@ -248,14 +248,14 @@ class Rapid(models.Model):
|
|||||||
user_answers = set(
|
user_answers = set(
|
||||||
[i.answer_compare for i in self.cid_user_answers.all() if i.normal == False]
|
[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
|
return unmarked_answers
|
||||||
|
|
||||||
def GetUnmarkedAnswerCount(self):
|
def get_unmarked_answer_count(self):
|
||||||
return len(self.GetUnmarkedAnswers())
|
return len(self.get_unmarked_answers())
|
||||||
|
|
||||||
def GetMarkedAnswers(self):
|
def get_marked_answers(self):
|
||||||
return set(
|
return set(
|
||||||
[
|
[
|
||||||
i.answer_compare
|
i.answer_compare
|
||||||
@@ -276,7 +276,7 @@ class Rapid(models.Model):
|
|||||||
marked_answers = correct_answers | half_mark_answers | incorrect_answers
|
marked_answers = correct_answers | half_mark_answers | incorrect_answers
|
||||||
return marked_answers
|
return marked_answers
|
||||||
|
|
||||||
def GetCorrectUnstrippedAnswers(self):
|
def get_correct_unstripped_answers(self):
|
||||||
return set(
|
return set(
|
||||||
[
|
[
|
||||||
str(i)
|
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()
|
qs = self.images.all()
|
||||||
|
|
||||||
if not feedback:
|
if not feedback:
|
||||||
@@ -295,10 +295,10 @@ class Rapid(models.Model):
|
|||||||
|
|
||||||
return images
|
return images
|
||||||
|
|
||||||
def GetImageUrls(self):
|
def get_image_urls(self):
|
||||||
return ",".join(["https://penracourses.org.uk{}".format(i.url) for i in self.GetImages()])
|
return ",".join(["https://penracourses.org.uk{}".format(i.url) for i in self.get_images()])
|
||||||
#def GetNonFeedbackQuestionImages(self):
|
#def GetNonFeedbackQuestionImages(self):
|
||||||
#return self.GetImages()
|
#return self.get_images()
|
||||||
|
|
||||||
|
|
||||||
class RapidImage(models.Model):
|
class RapidImage(models.Model):
|
||||||
@@ -427,7 +427,7 @@ class Exam(ExamBase):
|
|||||||
if not self.exam_mode:
|
if not self.exam_mode:
|
||||||
exam_questions[q.id]["normal"] = q.normal
|
exam_questions[q.id]["normal"] = q.normal
|
||||||
exam_questions[q.id]["feedback_images"] = feedback_images
|
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:
|
#if feedback_images:
|
||||||
@@ -482,7 +482,7 @@ class CidUserAnswer(models.Model):
|
|||||||
except (Exam.DoesNotExist, KeyError) as e:
|
except (Exam.DoesNotExist, KeyError) as e:
|
||||||
exam = "None"
|
exam = "None"
|
||||||
return "{}/{}/{}: {}".format(
|
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):
|
def save(self, *args, **kwargs):
|
||||||
|
|||||||
@@ -27,14 +27,14 @@
|
|||||||
|
|
||||||
<li data-question_pk={{question.pk}}>
|
<li data-question_pk={{question.pk}}>
|
||||||
<a href="{% url 'rapids:exam_question_detail' pk=exam.pk sk=forloop.counter0 %}">
|
<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" />
|
<img src="{{ image|thumbnail_url:'exam-list' }}" alt="thumbail" />
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</a>
|
</a>
|
||||||
{% if not question.normal %}
|
{% if not question.normal %}
|
||||||
<b>Abnormality:</b> {{ question.get_abnormalities }} <b>Region:</b> {{ question.get_regions }}
|
<b>Abnormality:</b> {{ question.get_abnormalities }} <b>Region:</b> {{ question.get_regions }}
|
||||||
<br />
|
<br />
|
||||||
{{ question.GetPrimaryAnswer }}
|
{{ question.get_primary_answer }}
|
||||||
{% else %}
|
{% else %}
|
||||||
<b>Normal</b>
|
<b>Normal</b>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Answers will be automatically marked.
|
|||||||
Answers marked as normal will be automatically marked.<br/>
|
Answers marked as normal will be automatically marked.<br/>
|
||||||
Region: {{ question.get_regions }}, Abnormalities: {{ question.get_abnormalities }}
|
Region: {{ question.get_regions }}, Abnormalities: {{ question.get_abnormalities }}
|
||||||
{% endif %}
|
{% 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}}'>
|
data-annotations='{{question.image_annotations}}'>
|
||||||
</div>
|
</div>
|
||||||
<div class="marking">
|
<div class="marking">
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
<ul id="question-mark-list">
|
<ul id="question-mark-list">
|
||||||
{% for question in questions.all %}
|
{% for question in questions.all %}
|
||||||
<li data-markcount={{question.GetUnmarkedAnswerCount}}><a href="{% url 'rapids:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
<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.GetUnmarkedAnswersString }}</li>
|
{{ question }}</a><br /> {{ question.get_unmarked_answer_string }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% 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>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
+2
-2
@@ -645,7 +645,7 @@ def mark(request, pk, sk):
|
|||||||
# i.answer.lower() for i in question.incorrect_answers.all()
|
# 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":
|
if request.method == "POST":
|
||||||
|
|
||||||
@@ -894,7 +894,7 @@ def exam_scores_cid_user(request, pk, sk):
|
|||||||
ans = user_answer.answer
|
ans = user_answer.answer
|
||||||
answer_score = user_answer.get_answer_score()
|
answer_score = user_answer.get_answer_score()
|
||||||
|
|
||||||
correct_answer = q.GetPrimaryAnswer()
|
correct_answer = q.get_primary_answer()
|
||||||
|
|
||||||
if not exam.publish_results:
|
if not exam.publish_results:
|
||||||
correct_answer = "*****"
|
correct_answer = "*****"
|
||||||
|
|||||||
Reference in New Issue
Block a user