summaryrefslogtreecommitdiff
path: root/tablon
diff options
context:
space:
mode:
Diffstat (limited to 'tablon')
-rw-r--r--tablon/admin.py4
-rw-r--r--tablon/decorators.py23
-rw-r--r--tablon/urls.py16
-rw-r--r--tablon/views.py29
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)