X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/b30e868485c315792f1c37e4677bd3cc77b54922..b2de1e7fc98e2e1329ccc24e1c36135518031ad2:/catalogue/forms.py?ds=sidebyside diff --git a/catalogue/forms.py b/catalogue/forms.py index 84f2e43..7230b23 100644 --- a/catalogue/forms.py +++ b/catalogue/forms.py @@ -1,4 +1,10 @@ # -*- coding: utf-8 -*- +import json +import os.path +import shutil +import urllib +from tempfile import mkdtemp + from django.forms import Form, CharField from librarian import IOFile @@ -7,6 +13,23 @@ from catalogue.models import Lesson class LessonImportForm(Form): lesson_xml = CharField() + gallery_url = CharField(required=False) + attachments = CharField(required=False) + + 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(IOFile.from_string(self.cleaned_data['lesson_xml'])) + 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