Source code for oioioi.quizzes.views

from django.core.exceptions import PermissionDenied
from django.http import HttpResponseNotFound
from django.shortcuts import get_object_or_404

from oioioi.filetracker.utils import stream_file
from oioioi.problems.utils import can_admin_problem_instance
from oioioi.quizzes.models import QuizAnswerPicture, QuizQuestionPicture


[docs]def picture_view(request, mode, picture_id): modes = { 'a': QuizAnswerPicture, 'q': QuizQuestionPicture, } if mode not in modes: return HttpResponseNotFound() picture = get_object_or_404(modes[mode], id=picture_id) if not any( [ pi.controller.can_submit(request, pi) or can_admin_problem_instance(request, pi) for pi in picture.quiz.probleminstance_set.filter(contest=request.contest) ] ): raise PermissionDenied return stream_file(picture.file)