Fix Picture import: split theme names, more space for titles.
[wolnelektury.git] / apps / picture / forms.py
index ad5096b..2ad47b0 100644 (file)
@@ -1,3 +1,7 @@
+# -*- coding: utf-8 -*-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
 from django import forms
 from django.utils.translation import ugettext_lazy as _
 from picture.models import Picture
@@ -6,9 +10,11 @@ from picture.models import Picture
 class PictureImportForm(forms.Form):
     picture_xml_file = forms.FileField(required=False)
     picture_xml = forms.CharField(required=False)
-    picture_image_file = forms.FileField(required=True)
+    picture_image_file = forms.FileField(required=False)
+    picture_image_data = forms.CharField(required=False)
 
     def clean(self):
+        from base64 import b64decode
         from django.core.files.base import ContentFile
 
         if not self.cleaned_data['picture_xml_file']:
@@ -17,6 +23,15 @@ class PictureImportForm(forms.Form):
                         ContentFile(self.cleaned_data['picture_xml'].encode('utf-8'))
             else:
                 raise forms.ValidationError(_("Please supply an XML."))
+
+        if not self.cleaned_data['picture_image_file']:
+            if self.cleaned_data['picture_image_data']:
+                self.cleaned_data['picture_image_file'] = \
+                        ContentFile(b64decode(
+                                self.cleaned_data['picture_image_data']))
+            else:
+                raise forms.ValidationError(_("Please supply an image."))
+
         return super(PictureImportForm, self).clean()
 
     def save(self, commit=True, **kwargs):