use <input type=file multiple> to handle multi-file uploads
authorTero Marttila <terom@fixme.fi>
Thu, 22 Aug 2013 02:12:13 +0300
changeset 55 eb36c4d046c1
parent 54 0a2345d1450a
child 56 96e1c616a955
use <input type=file multiple> to handle multi-file uploads
qrurls/admin.py
qrurls/templates/admin/qrurls_import_images.html
--- a/qrurls/admin.py	Thu Aug 22 02:00:03 2013 +0300
+++ b/qrurls/admin.py	Thu Aug 22 02:12:13 2013 +0300
@@ -157,17 +157,16 @@
         shorturl = forms.ModelChoiceField(URL.objects)
         publishing_date = forms.DateField(widget=admin.widgets.AdminDateWidget)
         publishing_time = forms.TimeField(widget=admin.widgets.AdminTimeWidget)
-        image = forms.ImageField()
+        # Django forms doesn't really understand multi-value fields, so we just hack this ourselves.
+        #image = forms.ImageField()
 
-    def import_images_handler (self, url_feed, data) :
+    def import_images_handler (self, url_feed, data, images=()) :
         """Custom for backend for mass-importing images into a feed."""
         
-        images = [data['image']]
         publishing = self.publishing_schedule(data['publishing_date'], data['publishing_time'], len(images))
 
         for image, publish in zip(images, publishing) :
-            # XXX: move title default elsewhere
-            url_image = URLImage(image=image, title=image.name)
+            url_image = URLImage(image=image)
             url_image.save()
 
             url_item = URLItem(shorturl=url_feed, published=publish, image=url_image)
@@ -180,10 +179,11 @@
         url_feed = URL.objects.get(id=int(shorturl_id))
         
         if request.method == 'POST' :
-            form = self.ImportForm(request.POST, request.FILES)
+            form = self.ImportForm(request.POST)
+            images = request.FILES.getlist('image')
 
             if form.is_valid() :
-                return self.import_images_handler(url_feed, form.cleaned_data)
+                return self.import_images_handler(url_feed, form.cleaned_data, images)
         else :
             publishing_date, publishing_time = self.publish_scheduling(url_feed)
 
--- a/qrurls/templates/admin/qrurls_import_images.html	Thu Aug 22 02:00:03 2013 +0300
+++ b/qrurls/templates/admin/qrurls_import_images.html	Thu Aug 22 02:12:13 2013 +0300
@@ -45,10 +45,10 @@
                 </div>
                 <div class="form-row">
                     <div class="field-box field-image">
-                        {{ form.image.errors }}
-                        {{ form.image.label_tag }}
-                        {{ form.image }}
+                        <label for="image">Images</label>
+                        <input type="file" name="image" id="image" multiple="multiple">
                     </div>
+                    <p class="help">Selecting multiple image files is possible.</p>
                 </div>
             </fieldset>