From a3ec02631204621719456bb6f1a5864f43d1d5f5 Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Wed, 2 Oct 2013 13:08:34 +0200
Subject: [PATCH 01/23] Fix view that lists already uploaded files.
Transform PictureListView to a generic ListView
Fix url to use as_view()
---
fileupload/urls.py | 8 ++++++--
fileupload/views.py | 14 +++++++-------
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/fileupload/urls.py b/fileupload/urls.py
index 06de8ec..21f48a3 100644
--- a/fileupload/urls.py
+++ b/fileupload/urls.py
@@ -1,6 +1,10 @@
# encoding: utf-8
from django.conf.urls import patterns, url
-from fileupload.views import BasicVersionCreateView, BasicPlusVersionCreateView, PictureCreateView, AngularVersionCreateView, jQueryVersionCreateView, PictureDeleteView
+from fileupload.views import (
+ BasicVersionCreateView, BasicPlusVersionCreateView,
+ jQueryVersionCreateView, AngularVersionCreateView,
+ PictureCreateView, PictureDeleteView, PictureListView,
+ )
urlpatterns = patterns('',
(r'^basic/$', BasicVersionCreateView.as_view(), {}, 'upload-basic'),
@@ -9,7 +13,7 @@
(r'^angular/$', AngularVersionCreateView.as_view(), {}, 'upload-angular'),
(r'^jquery-ui/$', jQueryVersionCreateView.as_view(), {}, 'upload-jquery'),
(r'^delete/(?P\d+)$', PictureDeleteView.as_view(), {}, 'upload-delete'),
- url(r'^view/$', 'fileupload.views.PictureListView', name='upload-view'),
+ url(r'^view/$', PictureListView.as_view(), name='upload-view'),
)
diff --git a/fileupload/views.py b/fileupload/views.py
index 2b06e79..e863a20 100644
--- a/fileupload/views.py
+++ b/fileupload/views.py
@@ -1,5 +1,5 @@
# encoding: utf-8
-from django.views.generic import CreateView, DeleteView, View
+from django.views.generic import CreateView, DeleteView, ListView
from .models import Picture
from .response import JSONResponse, response_mimetype
from .serialize import serialize
@@ -44,12 +44,12 @@ def delete(self, request, *args, **kwargs):
return response
-class PictureListView(View):
- def get(self, request, *args, **kwargs):
- files = []
- for obj in Picture.objects.all():
- files.append(serialize(obj))
+class PictureListView(ListView):
+ model = Picture
+
+ def render_to_response(self, context, **response_kwargs):
+ files = [ serialize(p) for p in self.get_queryset() ]
data = {'files': files}
- response = JSONResponse(data, mimetype=response_mimetype(request))
+ response = JSONResponse(data, mimetype=response_mimetype(self.request))
response['Content-Disposition'] = 'inline; filename=files.json'
return response
From 04278dcb86b167f64b06472412659de81434e9e7 Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Wed, 2 Oct 2013 13:10:45 +0200
Subject: [PATCH 02/23] Use newer url syntax for all urls
---
fileupload/urls.py | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/fileupload/urls.py b/fileupload/urls.py
index 21f48a3..dbbcbca 100644
--- a/fileupload/urls.py
+++ b/fileupload/urls.py
@@ -7,14 +7,11 @@
)
urlpatterns = patterns('',
- (r'^basic/$', BasicVersionCreateView.as_view(), {}, 'upload-basic'),
- (r'^basic/plus/$', BasicPlusVersionCreateView.as_view(), {}, 'upload-basic-plus'),
- (r'^new/$', PictureCreateView.as_view(), {}, 'upload-new'),
- (r'^angular/$', AngularVersionCreateView.as_view(), {}, 'upload-angular'),
- (r'^jquery-ui/$', jQueryVersionCreateView.as_view(), {}, 'upload-jquery'),
- (r'^delete/(?P\d+)$', PictureDeleteView.as_view(), {}, 'upload-delete'),
+ url(r'^basic/$', BasicVersionCreateView.as_view(), name='upload-basic'),
+ url(r'^basic/plus/$', BasicPlusVersionCreateView.as_view(), name='upload-basic-plus'),
+ url(r'^new/$', PictureCreateView.as_view(), name='upload-new'),
+ url(r'^angular/$', AngularVersionCreateView.as_view(), name='upload-angular'),
+ url(r'^jquery-ui/$', jQueryVersionCreateView.as_view(), name='upload-jquery'),
+ url(r'^delete/(?P\d+)$', PictureDeleteView.as_view(), name='upload-delete'),
url(r'^view/$', PictureListView.as_view(), name='upload-view'),
)
-
-
-
From 9eaa47e8b52a1a633fc7bedd0587351793451b98 Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Wed, 2 Oct 2013 13:32:08 +0200
Subject: [PATCH 03/23] Rename base.html to upload_base.html
base.html is a very common name, and may clash with users' base.html
---
fileupload/templates/fileupload/picture_form.html | 2 +-
fileupload/templates/{base.html => upload_base.html} | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename fileupload/templates/{base.html => upload_base.html} (100%)
diff --git a/fileupload/templates/fileupload/picture_form.html b/fileupload/templates/fileupload/picture_form.html
index e01d929..a8754bc 100644
--- a/fileupload/templates/fileupload/picture_form.html
+++ b/fileupload/templates/fileupload/picture_form.html
@@ -1,4 +1,4 @@
-{% extends "base.html" %}
+{% extends "upload_base.html" %}
{% load upload_tags %}
{% block content %}
diff --git a/fileupload/templates/base.html b/fileupload/templates/upload_base.html
similarity index 100%
rename from fileupload/templates/base.html
rename to fileupload/templates/upload_base.html
From 4b0aca483ca5f80c7a2ed48536e8430810a275bc Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Sun, 8 Dec 2013 02:31:39 +0100
Subject: [PATCH 04/23] Ignore this until django 1.6 branch takes over
---
.gitignore | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index e74c193..b0d4e48 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,8 @@ db
/share
/env
/venv
+/django-jquery-file-upload
*.log
*.pot
*.pyc
-local_settings.py
\ No newline at end of file
+local_settings.py
From 8d97d7fb8e63fab6c28857ae8471d3ac5195a5d4 Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Sun, 8 Dec 2013 02:35:07 +0100
Subject: [PATCH 05/23] This works up until Django 1.6. A new branch exists for
1.6.
---
requirements.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/requirements.txt b/requirements.txt
index 67a04d6..23cb63a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
-django
+django<1.6
pillow
From d5523a67d68528cfca39fa2a8d21ff34d94de4ed Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Wed, 11 Dec 2013 19:43:06 +0100
Subject: [PATCH 06/23] Better handling of errors in backend.
---
fileupload/views.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fileupload/views.py b/fileupload/views.py
index e863a20..98b339c 100644
--- a/fileupload/views.py
+++ b/fileupload/views.py
@@ -1,4 +1,7 @@
# encoding: utf-8
+import json
+
+from django.http import HttpResponse
from django.views.generic import CreateView, DeleteView, ListView
from .models import Picture
from .response import JSONResponse, response_mimetype
@@ -16,6 +19,9 @@ def form_valid(self, form):
response['Content-Disposition'] = 'inline; filename=files.json'
return response
+ def form_invalid(self, form):
+ data = json.dumps(form.errors)
+ return HttpResponse(content=data, status=400, content_type='application/json')
class BasicVersionCreateView(PictureCreateView):
template_name_suffix = '_basic_form'
From 97c66173318c46985f7809df77edfea316bfdd53 Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Wed, 11 Dec 2013 19:49:39 +0100
Subject: [PATCH 07/23] Show form validation errors from Django.
---
fileupload/static/js/jquery.fileupload.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fileupload/static/js/jquery.fileupload.js b/fileupload/static/js/jquery.fileupload.js
index d048a94..3a1ec70 100644
--- a/fileupload/static/js/jquery.fileupload.js
+++ b/fileupload/static/js/jquery.fileupload.js
@@ -805,6 +805,9 @@
response.jqXHR = options.jqXHR = jqXHR;
response.textStatus = options.textStatus = textStatus;
response.errorThrown = options.errorThrown = errorThrown;
+ if ('file' in response.jqXHR.responseJSON) {
+ response.errorThrown = options.errorThrown = response.jqXHR.responseJSON.file.join(", ");
+ }
this._trigger('fail', null, options);
},
From d362c94a962788805ffbdc21f8594759b74a00e2 Mon Sep 17 00:00:00 2001
From: Sigurd Gartmann
Date: Mon, 20 Jan 2014 13:03:05 +0100
Subject: [PATCH 08/23] Add csrf.js, as suggested by @ET-CS, fixes #49.
---
fileupload/templates/fileupload/picture_jquery_form.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/fileupload/templates/fileupload/picture_jquery_form.html b/fileupload/templates/fileupload/picture_jquery_form.html
index cad7980..cf0ed04 100644
--- a/fileupload/templates/fileupload/picture_jquery_form.html
+++ b/fileupload/templates/fileupload/picture_jquery_form.html
@@ -233,6 +233,7 @@
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+