Added the ability to delete geometries for registered users

This commit is contained in:
sebastian 2013-11-09 22:54:15 +01:00
parent 504773e01e
commit f4231c9c28
6 changed files with 101 additions and 6 deletions

View File

@ -167,12 +167,16 @@
{{geometry.get_depth}}
</div>
</div>
<h2><i class="icon-download-alt"></i> Downloads</h2>
<a class="pure-button button-green" href="{{geometry.file.url}}"><i class="icon-download"></i> Download Model</a><br/>
{% if geometry.sourcefile %}
<a class="pure-button button-lightblue" href="{{geometry.sourcefile.url}}"><i class="icon-edit-sign"></i> Download Source</a>
{% endif %}
{% if user.is_authenticated and user.id = geometry.user.id %}
<h2><i class="icon-trash"></i> Delete</h2>
<a class="pure-button button-red" href="{% url 'geometry_delete' id=geometry.id %}"><i class="icon-remove-circle"></i> Delete model</a><br/>
{% endif %}
</div>
</div>
</div>

View File

@ -0,0 +1,60 @@
{% extends "base.html" %}
{% block title %} New paste {% endblock %}
{% block headeraddons %}
<script src="{{STATIC_URL}}js/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("input[type='file']").each(function () {
$(this).hide();
$(this).after(' <a href="#" class="browsebutton pure-button button-lightblue">Browse</a>');
$(this).after('<input type="text" readonly/>');
$(this).change(function() {
$(this).next().val($(this).val());
});
});
$(".browsebutton").click(function() {
$(this).prev().prev().click();
});
});
</script>
{% endblock %}
{% block content %}
<div id="content">
<div id="prompt">
<!-- if IE without GCF, prompt goes here -->
</div>
<h1>New paste</h1>
<div class="pure-g-r">
<div class="pure-u-2-3">
<div class="textcontainer">
<form action="" method="post">
{% csrf_token %}
Are you sure you want to delete <b>{{ object.name }}</b>?<br/>
The deletion can never be undone so be carefull now !</br>
<br/>
<button type="submit" class="pure-button button-red">
<i class="icon-remove-circle"></i>
Delete
</button>
<a class="pure-button button-green" href="{% url 'geometry_details' id=object.id %}">
Abort
</a>
</form>
</div>
</div>
<div class="pure-u-1-3">
{% include 'pastebin/latest_geometries.html' %}
</div>
</div>
</div>
{% endblock %}

View File

@ -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<id>\d+)/$', GeometryDelete.as_view(), name='geometry_delete'),
url(r'^g/(?P<id>\d+)/$', GeometryView.as_view(), name='geometry_details'))

View File

@ -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
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)

View File

@ -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; }

View File

@ -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;