Skip to content
This repository was archived by the owner on Aug 12, 2020. It is now read-only.

Commit 243bcec

Browse files
author
Saurabh
committed
Code now working with an extra field description
1 parent 297bc51 commit 243bcec

File tree

6 files changed

+29
-3
lines changed

6 files changed

+29
-3
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@
55
/lib
66
/local
77
/share
8+
9+
*.pyc

fileupload/models.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from django.db import models
22

3+
34
class Picture(models.Model):
45

56
# This is a small demo using just two fields. The slug field is really not
@@ -9,6 +10,7 @@ class Picture(models.Model):
910

1011
#file = models.FileField(upload_to="pictures")
1112
file = models.ImageField(upload_to="pictures")
13+
description = models.CharField(max_length=200, blank=True)
1214
slug = models.SlugField(max_length=50, blank=True)
1315

1416
def __unicode__(self):

fileupload/static/js/main.js

+11
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ $(function () {
2828
)
2929
);
3030

31+
$('#fileupload').bind('fileuploadsubmit', function (e, data) {
32+
var inputs = data.context.find(':input');
33+
console.log(inputs);
34+
if (inputs.filter('[required][value=""]').first().focus().length) {
35+
return false;
36+
}
37+
data.formData = inputs.serializeArray();
38+
data.formData.push({"name": 'csrfmiddlewaretoken', 'value': $('input[name=csrfmiddlewaretoken]').val() });
39+
console.log(data.formData);
40+
});
41+
3142
if (window.location.hostname === 'blueimp.github.com') {
3243
// Demo settings:
3344
$('#fileupload').fileupload('option', {

fileupload/templatetags/upload_tags.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def upload_js():
1111
<tr class="template-upload fade">
1212
<td class="preview"><span class="fade"></span></td>
1313
<td class="name"><span>{%=file.name%}</span></td>
14+
<td class="description"><label>Description: <input name="description" required></label></td>
1415
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
1516
{% if (file.error) { %}
1617
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
@@ -53,7 +54,7 @@ def upload_js():
5354
<a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
5455
</td>
5556
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
56-
<td colspan="2"></td>
57+
<td colspan="2">Description{%=file.description%}</td>
5758
{% } %}
5859
<td class="delete">
5960
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">

fileupload/views.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,34 @@
55
from django.utils import simplejson
66
from django.core.urlresolvers import reverse
77

8+
from django.views.decorators.csrf import csrf_exempt
9+
810
from django.conf import settings
911

12+
1013
def response_mimetype(request):
1114
if "application/json" in request.META['HTTP_ACCEPT']:
1215
return "application/json"
1316
else:
1417
return "text/plain"
1518

19+
1620
class PictureCreateView(CreateView):
1721
model = Picture
1822

1923
def form_valid(self, form):
2024
self.object = form.save()
25+
print self.object.description
2126
f = self.request.FILES.get('file')
22-
data = [{'name': f.name, 'url': settings.MEDIA_URL + "pictures/" + f.name.replace(" ", "_"), 'thumbnail_url': settings.MEDIA_URL + "pictures/" + f.name.replace(" ", "_"), 'delete_url': reverse('upload-delete', args=[self.object.id]), 'delete_type': "DELETE"}]
27+
data = [{'name': f.name, 'url': self.object.file.url, 'description': self.object.description, 'thumbnail_url': self.object.file.url, 'delete_url': reverse('upload-delete', args=[self.object.id]), 'delete_type': "DELETE"}]
2328
response = JSONResponse(data, {}, response_mimetype(self.request))
2429
response['Content-Disposition'] = 'inline; filename=files.json'
2530
return response
2631

32+
# @csrf_exempt
33+
def dispatch(self, *args, **kwargs):
34+
return super(PictureCreateView, self).dispatch(*args, **kwargs)
35+
2736

2837
class PictureDeleteView(DeleteView):
2938
model = Picture
@@ -42,6 +51,7 @@ def delete(self, request, *args, **kwargs):
4251
else:
4352
return HttpResponseRedirect('/upload/new')
4453

54+
4555
class JSONResponse(HttpResponse):
4656
"""JSON response class."""
4757
def __init__(self,obj='',json_opts={},mimetype="application/json",*args,**kwargs):

settings.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595
MIDDLEWARE_CLASSES = (
9696
'django.middleware.common.CommonMiddleware',
9797
'django.contrib.sessions.middleware.SessionMiddleware',
98-
'django.middleware.csrf.CsrfViewMiddleware',
98+
'django.middleware.csrf.CsrfViewMiddleware',
9999
'django.contrib.auth.middleware.AuthenticationMiddleware',
100100
'django.contrib.messages.middleware.MessageMiddleware',
101101
)

0 commit comments

Comments
 (0)