X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/d0f0e1412cc42d366b234e798dfb68feed05d751..d555d988764995ea1f9f5ece46f453a66f09b334:/src/catalogue/forms.py diff --git a/src/catalogue/forms.py b/src/catalogue/forms.py new file mode 100644 index 0000000..7230b23 --- /dev/null +++ b/src/catalogue/forms.py @@ -0,0 +1,35 @@ +# -*- 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 +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) + + 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