X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/d66b8ae1ad69a5111e7dd6c1fbd5124f4db142e5..334d0b5148de69b0509e001631154aa3ec788d36:/catalogue/forms.py diff --git a/catalogue/forms.py b/catalogue/forms.py index 834785f..7230b23 100644 --- a/catalogue/forms.py +++ b/catalogue/forms.py @@ -1,23 +1,35 @@ # -*- coding: utf-8 -*- -from django.forms import Form, FileField, CharField, ValidationError +import json +import os.path +import shutil +import urllib +from tempfile import mkdtemp +from django.forms import Form, CharField + +from librarian import IOFile from catalogue.models import Lesson class LessonImportForm(Form): - lesson_xml_file = FileField(required=False) - lesson_xml = CharField(required=False) - - def clean(self): - from django.core.files.base import ContentFile + lesson_xml = CharField() + gallery_url = CharField(required=False) + attachments = CharField(required=False) - if not self.cleaned_data['lesson_xml_file']: - if self.cleaned_data['lesson_xml']: - self.cleaned_data['lesson_xml_file'] = \ - ContentFile(self.cleaned_data['lesson_xml'].encode('utf-8')) - else: - raise ValidationError(u"Proszę dostarczyć XML.") - return super(LessonImportForm, self).clean() + def save(self): + temp_dir = mkdtemp() + attachment_names = json.loads(self.cleaned_data['attachments']) + attachments = {} + remote_gallery_url = self.cleaned_data['gallery_url'] + if remote_gallery_url and attachment_names: + for attachment_name in attachment_names: + attachment_url = ('%s%s' % (remote_gallery_url, attachment_name)).encode('utf-8') + temp_filename = os.path.join(temp_dir, attachment_name) + urllib.urlretrieve(attachment_url, temp_filename) + attachments[attachment_name] = IOFile.from_filename(temp_filename) - def save(self, commit=True, **kwargs): - return Lesson.publish(self.cleaned_data['book_xml_file']) + lesson = Lesson.publish( + IOFile.from_string(self.cleaned_data['lesson_xml'], attachments=attachments)) + if os.path.isdir(temp_dir): + shutil.rmtree(temp_dir) + return lesson