This commit is contained in:
Ross
2021-04-18 12:03:07 +01:00
parent 564167184b
commit 8918f1cd5b
4 changed files with 43 additions and 1 deletions
+3
View File
@@ -369,6 +369,9 @@ class ExamViews(View, LoginRequiredMixin):
return JsonResponse({"success": False, "error": "Invalid data"})
def exam_json_unbased(self, request, pk):
"""
No (file based) caching is enabled for unbased exams
"""
exam = get_object_or_404(self.Exam, pk=pk)
if not exam.active:
+31 -1
View File
@@ -169,10 +169,40 @@ class Long(models.Model):
answers = self.cid_user_answers.all()
return [ans for ans in answers if not ans.is_marked()]
def get_json(self, question_id):
def get_json(self, question_id, based=True):
# self == q?
q = get_object_or_404(Long, pk=question_id)
if not based:
image_titles = []
images = []
question_series = q.series.all()
# Loop through longimage associations
for i, series in enumerate(question_series):
#image_array = []
#for i in series.images.all():
# image_array.append(image_as_base64(i.image))
# #image_array.append(i.image.url)
# We are still limited by the size of a series (although this should not be too big or computers will crash...)
images.append([i.image for i in series.images.all()])
#image_array = [i.image.url for i in series.images.all()]
#images.append(url)
image_titles.append(series.get_examination())
question_json = {
"title": q.history,
"images": images,
"image_titles": image_titles,
#"feedback_image": [],
#"annotations": [str(q.image_annotations)],
"type": "long",
"cached": False,
}
return question_json
#exam_order.append(q.id)
path= "{0}longs/questions/{1}.json".format(settings.MEDIA_ROOT, question_id)
url= "{0}longs/questions/{1}.json".format(settings.MEDIA_URL, question_id)
+1
View File
@@ -20,6 +20,7 @@ urlpatterns = [
# path("verified/<int:pk>/", views.verified_detail, name="verified_detail"),
path("question/<int:pk>/", views.question_detail, name="question_detail"),
path("question/<int:pk>/json", views.question_json, name="question_json"),
path("question/<int:pk>/json/unbased", views.question_json_unbased, name="question_json_unbased"),
path("question/<int:pk>/json/recreate", views.question_json_recreate, name="question_json_recreate"),
path("question/<int:pk>/split", views.long_split, name="long_split"),
path("question/<int:pk>/clone", views.LongClone.as_view(), name="long_clone"),
+8
View File
@@ -988,6 +988,14 @@ class ExamViewSet(viewsets.ModelViewSet):
queryset = Exam.objects.all().order_by('name')
serializer_class = ExamSerializer
def question_json_unbased(self, request, pk):
"""
No (file based) caching is enabled for unbased quesitons
"""
question = get_object_or_404(self.Exam, pk=pk)
question_json = question.get_json(pk, based=False)
return JsonResponse(question_json)
def question_json(request, pk):
question = get_object_or_404(Long, pk=pk)