Skip to content

Commit 2b6b3b3

Browse files
committed
make delete buttons work
1 parent ea9cfe6 commit 2b6b3b3

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

fileupload/migrations/0001_initial.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def forwards(self, orm):
1212
db.create_table('fileupload_picture', (
1313
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
1414
('file', self.gf('django.db.models.fields.files.ImageField')(max_length=100)),
15+
('slug', self.gf('django.db.models.fields.SlugField')(db_index=True, max_length=50, blank=True)),
1516
))
1617
db.send_create_signal('fileupload', ['Picture'])
1718

@@ -26,7 +27,8 @@ def backwards(self, orm):
2627
'fileupload.picture': {
2728
'Meta': {'object_name': 'Picture'},
2829
'file': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
29-
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
30+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
31+
'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '50', 'blank': 'True'})
3032
}
3133
}
3234

fileupload/models.py

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
class Picture(models.Model):
44

55
file = models.ImageField(upload_to="pictures")
6+
slug = models.SlugField(max_length=50, blank=True)
67

78
def __unicode__(self):
89
return self.file
@@ -11,3 +12,6 @@ def __unicode__(self):
1112
def get_absolute_url(self):
1213
return ('upload-new', )
1314

15+
def save(self, *args, **kwargs):
16+
self.slug = self.file.name
17+
super(Picture, self).save(*args, **kwargs)

fileupload/urls.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from django.conf.urls.defaults import *
2-
from fileupload.views import PictureCreateView
2+
from fileupload.views import PictureCreateView, PictureDeleteView
33

44
urlpatterns = patterns('',
55
(r'^new/$', PictureCreateView.as_view(), {}, 'upload-new'),
6+
(r'^delete/(?P<slug>.+)$', PictureDeleteView.as_view(), {}, 'upload-delete'),
67
)
78

fileupload/views.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
from fileupload.models import Picture
2-
from django.views.generic import CreateView
2+
from django.views.generic import CreateView, DeleteView
33

44
from django.http import HttpResponse
55
from django.utils.functional import Promise
66
from django.utils.encoding import force_unicode
77
from django.utils import simplejson
8+
from django.core.urlresolvers import reverse
89

910
from django.conf import settings
1011

@@ -14,9 +15,17 @@ class PictureCreateView(CreateView):
1415
def form_valid(self, form):
1516
self.object = form.save()
1617
f = self.request.FILES.get('file')
17-
data = [{'name': f.name, 'url': settings.MEDIA_URL + "pictures/" + f.name, 'thumbnail_url': settings.MEDIA_URL + "pictures/" + f.name, 'delete_url': "index.html", 'delete_type': "DELETE"}]
18+
data = [{'name': f.name, 'url': settings.MEDIA_URL + "pictures/" + f.name, 'thumbnail_url': settings.MEDIA_URL + "pictures/" + f.name, 'delete_url': reverse('upload-delete', args=[f.name]), 'delete_type': "DELETE"}]
1819
return JSONResponse(data)
1920

21+
class PictureDeleteView(DeleteView):
22+
model = Picture
23+
24+
def delete(self, request, *args, **kwargs):
25+
self.object = self.get_object()
26+
self.object.delete()
27+
return JSONResponse(True)
28+
2029
class JSONResponse(HttpResponse):
2130
""" JSON response class """
2231
def __init__(self,content='',json_opts={},mimetype="application/json",*args,**kwargs):

0 commit comments

Comments
 (0)