+
+
+@cache_until_start
+@csrf_exempt
+def start(request, submission_id, key):
+ state = CompetitionState.get_state()
+ if state in (CompetitionState.BEFORE, CompetitionState.AFTER):
+ return globals()['form_' + state](request, submission_id, key)
+
+ submission = get_submission(submission_id)
+ if submission.key != key:
+ return render(request, 'wtem/key_not_found.html')
+
+ submission.opened_link = True
+ submission.save()
+
+ i, exercise = submission.current_exercise()
+ if not exercise:
+ return render(request, 'wtem/thanks_single.html')
+
+ return render(request, 'wtem/start.html', {'exercise_count': len(exercises), 'submission': submission})
+
+
+def confirmation(request, id, key):
+ conf = get_object_or_404(Confirmation, id=id, key=key)
+ was_confirmed = conf.confirmed
+ if not was_confirmed:
+ conf.confirmed = True
+ conf.save()
+ return render(request, 'wtem/confirmed.html', {'confirmation': conf, 'was_confirmed': was_confirmed})
+
+
+def teacher_confirmation(request, id, key):
+ conf = get_object_or_404(TeacherConfirmation, id=id, key=key)
+ was_confirmed = conf.confirmed
+ if not was_confirmed:
+ conf.confirmed = True
+ conf.save()
+ from contact.forms import contact_forms
+ form_class = contact_forms['olimpiada']
+ if not form_class.is_disabled():
+ pass
+ return render(request, 'wtem/teacher_confirmed.html', {
+ 'confirmation': conf,
+ 'was_confirmed': was_confirmed,
+ })