X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/d0f0e1412cc42d366b234e798dfb68feed05d751..d555d988764995ea1f9f5ece46f453a66f09b334:/src/wtem/forms.py?ds=inline diff --git a/src/wtem/forms.py b/src/wtem/forms.py new file mode 100644 index 0000000..ae406a3 --- /dev/null +++ b/src/wtem/forms.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +import re + +from django import forms + +from .models import Submission, Attachment, exercises + + +class WTEMForm(forms.ModelForm): + class Meta: + model = Submission + fields = ('answers',) + + def __init__(self, *args, **kwargs): + super(WTEMForm, self).__init__(*args, **kwargs) + for exercise in exercises: + if exercise['type'] != 'file_upload': + continue + self.fields['attachment_for_' + str(exercise['id'])] = forms.FileField(required=False) + + def save(self, commit=True): + submission = super(WTEMForm, self).save(commit=commit) + for name, attachment_file in self.files.items(): + m = re.match(r'attachment_for_(\d+)(?:__(.*))?', name) + exercise_id = int(m.group(1)) + tag = m.group(2) or None + try: + attachment = Attachment.objects.get(submission=submission, exercise_id=exercise_id, tag=tag) + except Attachment.DoesNotExist: + attachment = Attachment(submission=submission, exercise_id=exercise_id, tag=tag) + attachment.file = attachment_file + attachment.save()