From f4231c9c286ffbda069bed0ed53f1283582e8497 Mon Sep 17 00:00:00 2001 From: sebastian Date: Sat, 9 Nov 2013 22:54:15 +0100 Subject: [PATCH] Added the ability to delete geometries for registered users --- pastebin/templates/pastebin/geometry.html | 6 +- .../templates/pastebin/geometry_delete.html | 60 +++++++++++++++++++ pastebin/urls.py | 3 +- pastebin/views.py | 25 +++++++- static_common/css/layout.css | 6 +- static_common/css/layout.scss | 7 ++- 6 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 pastebin/templates/pastebin/geometry_delete.html diff --git a/pastebin/templates/pastebin/geometry.html b/pastebin/templates/pastebin/geometry.html index 53cb40c..a74930c 100644 --- a/pastebin/templates/pastebin/geometry.html +++ b/pastebin/templates/pastebin/geometry.html @@ -167,12 +167,16 @@ {{geometry.get_depth}} - +

Downloads

Download Model
{% if geometry.sourcefile %} Download Source {% endif %} + {% if user.is_authenticated and user.id = geometry.user.id %} +

Delete

+ Delete model
+ {% endif %} diff --git a/pastebin/templates/pastebin/geometry_delete.html b/pastebin/templates/pastebin/geometry_delete.html new file mode 100644 index 0000000..149a8e0 --- /dev/null +++ b/pastebin/templates/pastebin/geometry_delete.html @@ -0,0 +1,60 @@ +{% extends "base.html" %} + + +{% block title %} New paste {% endblock %} + + +{% block headeraddons %} + + +{% endblock %} + + +{% block content %} +
+
+ +
+ +

New paste

+
+
+
+
+ {% csrf_token %} + Are you sure you want to delete {{ object.name }}?
+ The deletion can never be undone so be carefull now !
+
+ + + Abort + +
+
+
+
+ {% include 'pastebin/latest_geometries.html' %} +
+
+
+{% endblock %} \ No newline at end of file diff --git a/pastebin/urls.py b/pastebin/urls.py index c453b90..2ccd88a 100644 --- a/pastebin/urls.py +++ b/pastebin/urls.py @@ -1,7 +1,8 @@ from django.conf.urls import patterns, include, url -from views import GeometryView, GeometryCreate +from views import GeometryView, GeometryCreate, GeometryDelete urlpatterns = patterns('', url(r'^new/$', GeometryCreate.as_view(), name='geometry_create'), + url(r'^g/delete/(?P\d+)/$', GeometryDelete.as_view(), name='geometry_delete'), url(r'^g/(?P\d+)/$', GeometryView.as_view(), name='geometry_details')) \ No newline at end of file diff --git a/pastebin/views.py b/pastebin/views.py index 5239b6e..ecb795f 100644 --- a/pastebin/views.py +++ b/pastebin/views.py @@ -1,7 +1,9 @@ -from django.views.generic.edit import CreateView +from django.views.generic.edit import CreateView, DeleteView from django.views.generic.detail import DetailView from django.core.urlresolvers import reverse from django.views.generic.base import ContextMixin +from django.core.exceptions import PermissionDenied + from forms import GeometryForm, AnonymousGeometryForm from models import Geometry @@ -41,4 +43,23 @@ class GeometryCreate(CreateView, LastesGeometriesMixin): self.object.user = self.request.user self.object.save() - return res \ No newline at end of file + return res + +class GeometryDelete(DeleteView, LastesGeometriesMixin): + model = Geometry + pk_url_kwarg = 'id' + template_name = 'pastebin/geometry_delete.html' + success_url ='/' + + def check_user(self, request): + obj = self.get_object() + if obj.user and obj.user.id != request.user.id: + raise PermissionDenied + + def get(self, request, *args, **kwargs): + self.check_user(request) + return super(GeometryDelete,self).get(self, request, *args, **kwargs) + + def delete(self, request, *args, **kwargs): + self.check_user(request) + return super(GeometryDelete,self).delete(self, request, *args, **kwargs) \ No newline at end of file diff --git a/static_common/css/layout.css b/static_common/css/layout.css index fcdb41a..729c3c4 100644 --- a/static_common/css/layout.css +++ b/static_common/css/layout.css @@ -29,7 +29,7 @@ border-color: #eeeeee; border-radius: 3px; background-color: #eee; - height: 60%; } + min-height: 60%; } #fileinfos .pure-button { margin: 2px; } @@ -63,6 +63,10 @@ background-color: #1CB841; color: #ffffff; } +.button-red { + background-color: #ca3c3c; + color: #ffffff; } + .button-lightblue { background-color: #42B8DD; color: #ffffff; } diff --git a/static_common/css/layout.scss b/static_common/css/layout.scss index 3193eee..e3eef26 100644 --- a/static_common/css/layout.scss +++ b/static_common/css/layout.scss @@ -42,7 +42,7 @@ @include gridcontainer; @include roundconers(#eee,6px); background-color: #eee; - height: 60%; + min-height: 60%; .pure-button { margin: 2px; @@ -94,6 +94,11 @@ color: #ffffff; } +.button-red { + background-color: #ca3c3c; + color: #ffffff; +} + .button-lightblue { background-color: #42B8DD; color: #ffffff;