Merge branch 'master' of ssh://git.xkjq.uk:30001/ross/rad

This commit is contained in:
Ross
2021-07-26 10:38:27 +01:00
37 changed files with 735 additions and 200 deletions
@@ -0,0 +1,18 @@
# Generated by Django 3.2.4 on 2021-07-06 19:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('longs', '0035_longseries_open_access'),
]
operations = [
migrations.AlterField(
model_name='exam',
name='exam_mode',
field=models.BooleanField(default=False, help_text='If an exam should be taken in exam mode (users results will be submited to the server for marking)'),
),
]
@@ -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)'),
),
]
+18
View File
@@ -0,0 +1,18 @@
# Generated by Django 3.2.4 on 2021-07-09 11:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('longs', '0037_alter_exam_time_limit'),
]
operations = [
migrations.AlterField(
model_name='exam',
name='name',
field=models.CharField(help_text='Name of the exam', max_length=200),
),
]
+10 -9
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,
)
@@ -568,7 +568,7 @@ class Exam(ExamBase):
return exam_question
def get_exam_json(self, based=False):
def get_exam_json(self, based=True):
questions = self.exam_questions.all()
exam_questions = defaultdict(dict)
@@ -619,6 +619,7 @@ class Exam(ExamBase):
"exam_mode": True,
"exam_order": exam_order,
"questions": exam_questions,
"based": based,
#"question_requests": exam_questions,
}
@@ -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