Code layout change.
[wolnelektury.git] / src / picture / forms.py
diff --git a/src/picture/forms.py b/src/picture/forms.py
new file mode 100644 (file)
index 0000000..2ad47b0
--- /dev/null
@@ -0,0 +1,39 @@
+# -*- 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
+
+
+class PictureImportForm(forms.Form):
+    picture_xml_file = forms.FileField(required=False)
+    picture_xml = forms.CharField(required=False)
+    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']:
+            if self.cleaned_data['picture_xml']:
+                self.cleaned_data['picture_xml_file'] = \
+                        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):
+        return Picture.from_xml_file(self.cleaned_data['picture_xml_file'], image_file=self.cleaned_data['picture_image_file'],
+                                     overwrite=True, **kwargs)