+ if request.POST:
+ # ugly :/
+ assignment_id = None
+ for post_key, value in request.POST.iteritems():
+ if post_key.endswith('assignment_id'):
+ assignment_id = int(value)
+ assert assignment_id
+
+ assignment = get_object_or_404(Assignment, id=assignment_id)
+ now = timezone.now()
+ if assignment.deadline < now:
+ return HttpResponseForbidden('Not Allowed')
+ attachments_valid, attachment_forms = get_attachment_forms(assignment, participant, request)
+ fields_valid, field_forms = get_field_forms(assignment, participant, request)
+ # tutaj w zasadzie powinno być też sprawdzenie attachments_valid, ale to powoduje,
+ # że jeśli jakiś plik nie został wysłany, to traktujemy to jako błąd, a tego nie chcemy.
+ # trzeba by znaleźć sensowny sposób odrózniania błędnego pliku od braku pliku.
+ # na szczęście pliki walidujemy też javascriptem, więc jakoś ujdzie
+ if fields_valid:
+ return HttpResponseRedirect(reverse('stage2_participant', args=(participant_id, key)))
+ else:
+ sent_forms = (assignment, field_forms, attachment_forms)
+ else:
+ sent_forms = None