diff options
author | Joaquín Aguirrezabalaga <kinote@kinote.org> | 2014-01-03 01:06:22 +0100 |
---|---|---|
committer | Joaquín Aguirrezabalaga <kinote@kinote.org> | 2014-01-03 01:06:40 +0100 |
commit | f05c5e2d8a705df1c94b63a978267b291c893bbb (patch) | |
tree | a8bd95e9cc2c0bd48be57893ccc4ddec63152d29 /tablon | |
parent | 802a74102b9073e961ef1d7a487f99b962d76512 (diff) | |
download | elgarito-master.tar.gz elgarito-master.zip |
Diffstat (limited to 'tablon')
-rw-r--r-- | tablon/admin.py | 4 | ||||
-rw-r--r-- | tablon/decorators.py | 23 | ||||
-rw-r--r-- | tablon/urls.py | 16 | ||||
-rw-r--r-- | tablon/views.py | 29 |
4 files changed, 41 insertions, 31 deletions
diff --git a/tablon/admin.py b/tablon/admin.py index 66b22bb..fea74be 100644 --- a/tablon/admin.py +++ b/tablon/admin.py @@ -1,6 +1,6 @@ # vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab: from django.contrib import admin -from elgarito.tablon.models import Foro, Tema, Mensaje, PermisoForo +from tablon.models import Foro, Tema, Mensaje, PermisoForo class ForoAdmin(admin.ModelAdmin): @@ -13,6 +13,7 @@ class ForoAdmin(admin.ModelAdmin): admin.site.register(Foro, ForoAdmin) + class TemaAdmin(admin.ModelAdmin): list_display = ( 'titulo', @@ -37,6 +38,7 @@ class MensajeAdmin(admin.ModelAdmin): admin.site.register(Mensaje, MensajeAdmin) + class PermisoForoAdmin(admin.ModelAdmin): list_display = ( 'foro', diff --git a/tablon/decorators.py b/tablon/decorators.py index 06d9501..aeff66a 100644 --- a/tablon/decorators.py +++ b/tablon/decorators.py @@ -1,8 +1,8 @@ # vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab: -from elgarito.tablon.models import Tema,Foro -from elgarito.usuarios.models import UserProfile +from tablon.models import Tema, Foro from django.http import HttpResponseForbidden, HttpResponseRedirect + def foro_can(permission): """ Decorator que comprueba los permisos del usuario para leer/escribir en un foro @@ -10,21 +10,23 @@ def foro_can(permission): def _dec(view_func): def _foro_can(request, *args, **kwargs): if permission == 'read': - if Foro.objects.get(id=kwargs['foro_id']).global_read == True: + if Foro.objects.get(id=kwargs['foro_id']).global_read is True: return view_func(request, *args, **kwargs) if request.user.is_anonymous(): - return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path) + return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path) if permission == 'write': - if Foro.objects.get(id=kwargs['foro_id']).global_write == True: + if Foro.objects.get(id=kwargs['foro_id']).global_write is True: return view_func(request, *args, **kwargs) if request.user.get_profile().foro_can(permission, kwargs['foro_id']): return view_func(request, *args, **kwargs) - return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' % (permission)) + return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' % + (permission)) _foro_can.__doc__ = view_func.__doc__ _foro_can.__dict__ = view_func.__dict__ return _foro_can return _dec + def tema_can(permission): """ Decorator que comprueba los permisos del usuario para leer/contestar un tema @@ -33,16 +35,17 @@ def tema_can(permission): def _tema_can(request, *args, **kwargs): foro_id = Tema.objects.get(id=kwargs['tema_id']).foro_id if permission == 'read': - if Foro.objects.get(id=foro_id).global_read == True: + if Foro.objects.get(id=foro_id).global_read is True: return view_func(request, *args, **kwargs) if not request.user.is_authenticated(): - return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path) + return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path) if permission == 'write': - if Foro.objects.get(id=foro_id).global_write == True: + if Foro.objects.get(id=foro_id).global_write is True: return view_func(request, *args, **kwargs) if request.user.get_profile().foro_can(permission, foro_id): return view_func(request, *args, **kwargs) - return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' % (permission)) + return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' % + (permission)) _tema_can.__doc__ = view_func.__doc__ _tema_can.__dict__ = view_func.__dict__ return _tema_can diff --git a/tablon/urls.py b/tablon/urls.py index 71fc677..065df8b 100644 --- a/tablon/urls.py +++ b/tablon/urls.py @@ -1,11 +1,13 @@ -from django.conf.urls.defaults import * +from django.conf.urls import patterns, url -urlpatterns = patterns('elgarito.tablon.views', - (r'^$', 'index'), +urlpatterns = patterns( + 'tablon.views', + + url(r'^$', 'index'), - (r'^foro/(?P<foro_id>\d+)/$', 'foro'), - (r'^foro/(?P<foro_id>\d+)/nuevo_tema/$', 'nuevo_tema'), + url(r'^foro/(?P<foro_id>\d+)/$', 'foro'), + url(r'^foro/(?P<foro_id>\d+)/nuevo_tema/$', 'nuevo_tema'), - (r'^tema/(?P<tema_id>\d+)/$', 'tema'), - (r'^tema/(?P<tema_id>\d+)/responder/$', 'responder'), + url(r'^tema/(?P<tema_id>\d+)/$', 'tema'), + url(r'^tema/(?P<tema_id>\d+)/responder/$', 'responder'), ) diff --git a/tablon/views.py b/tablon/views.py index 3834113..3e0c851 100644 --- a/tablon/views.py +++ b/tablon/views.py @@ -1,12 +1,11 @@ # vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab: -from elgarito.tablon.models import Foro, Tema, Mensaje, MensajeForm, Visita -from elgarito.tablon.decorators import * -from django.contrib.auth.models import User +from tablon.models import Foro, Tema, Mensaje, MensajeForm, Visita +from tablon.decorators import foro_can, tema_can from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext from django.http import HttpResponseRedirect -from django.contrib.auth.decorators import user_passes_test -from datetime import datetime +from django.utils import timezone + def index(request): lista_foros = Foro.objects.all() @@ -15,6 +14,7 @@ def index(request): 'lista_foros': lista_foros, })) + @foro_can('read') def foro(request, foro_id): foro = get_object_or_404(Foro, pk=foro_id) @@ -25,6 +25,7 @@ def foro(request, foro_id): 'lista_temas': lista_temas, })) + @tema_can('read') def tema(request, tema_id): tema = get_object_or_404(Tema, pk=tema_id) @@ -34,17 +35,17 @@ def tema(request, tema_id): try: v = Visita.objects.get(usuario=request.user.id, tema=tema_id) ult_visita = v.fecha - v.fecha = datetime.now() + v.fecha = timezone.now() except Visita.DoesNotExist: v = Visita(usuario=request.user, tema=tema) - ult_visita = datetime.min - v.save(); + ult_visita = timezone.min + v.save() else: - ult_visita = datetime.now() + ult_visita = timezone.now() visitados = {} for m in lista_mensajes: if (m.created_on > ult_visita): - visitados[m.id] = 1; + visitados[m.id] = 1 return render_to_response('tablon/tema.html', RequestContext(request, { @@ -55,6 +56,7 @@ def tema(request, tema_id): 'visitados': visitados, })) + @foro_can('write') def nuevo_tema(request, foro_id): if request.POST: @@ -64,14 +66,14 @@ def nuevo_tema(request, foro_id): titulo=request.POST['titulo'], foro=foro, autor=usuario, - ) + ) tema.save() mensaje = Mensaje(id=None, titulo=request.POST['titulo'], texto=request.POST['texto'], tema=tema, autor=usuario, - ) + ) mensaje.save() return HttpResponseRedirect('/tablon/tema/%s/' % tema.id) else: @@ -83,6 +85,7 @@ def nuevo_tema(request, foro_id): 'foro': foro, })) + @tema_can('write') def responder(request, tema_id): if request.POST: @@ -92,7 +95,7 @@ def responder(request, tema_id): texto=request.POST['texto'], tema=tema, autor=request.user, - ) + ) mensaje.save() return HttpResponseRedirect('/tablon/tema/%s/' % tema.id) |