past3d/pastebin/views.py

74 lines
2.3 KiB
Python
Raw Normal View History

from django.views.generic.edit import CreateView, DeleteView
2013-10-01 16:38:42 +02:00
from django.views.generic.detail import DetailView
2013-10-13 18:41:03 +02:00
from django.core.urlresolvers import reverse
2013-10-15 00:11:04 +02:00
from django.views.generic.base import ContextMixin
from django.core.exceptions import PermissionDenied
2013-11-27 23:10:45 +01:00
from django.views.generic.base import TemplateView
from django.views.generic.list import ListView
2013-10-01 16:38:42 +02:00
from forms import GeometryForm, AnonymousGeometryForm
2013-10-01 16:38:42 +02:00
from models import Geometry
2013-10-16 23:59:32 +02:00
class LastesGeometriesMixin(ContextMixin):
def get_context_data(self, **kwargs):
context = super(LastesGeometriesMixin, self).get_context_data(**kwargs)
context['latest_geometries'] = Geometry.get_latest()
return context
class GeometryListView(ListView, LastesGeometriesMixin):
model = Geometry
paginate_by = 50
paginate_orphans = 25
page_kwarg = 'page'
context_object_name = 'geometries'
template_name = 'pastebin/geometry_list.html'
2013-10-16 23:59:32 +02:00
2013-10-01 16:38:42 +02:00
class GeometryView(DetailView):
model = Geometry
pk_url_kwarg = 'id'
context_object_name = 'geometry'
2013-10-13 18:41:03 +02:00
template_name = 'pastebin/geometry.html'
2013-10-16 23:59:32 +02:00
class GeometryCreate(CreateView, LastesGeometriesMixin):
2013-10-13 18:41:03 +02:00
model = Geometry
template_name = 'pastebin/geometry_create.html'
def get_success_url(self):
2013-10-15 00:11:04 +02:00
return reverse('geometry_details', kwargs={'id' :self.object.id})
def get_form_class(self):
if self.request.user.is_authenticated() :
return GeometryForm
else:
return AnonymousGeometryForm
def form_valid(self, form):
res = super(GeometryCreate, self).form_valid(form)
if self.request.user.is_authenticated() :
self.object.user = self.request.user
self.object.save()
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)