1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
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.utils import timezone
def index(request):
lista_foros = Foro.objects.all()
return render_to_response('tablon/index.html',
RequestContext(request, {
'lista_foros': lista_foros,
}))
@foro_can('read')
def foro(request, foro_id):
foro = get_object_or_404(Foro, pk=foro_id)
lista_temas = foro.tema_set.all()
return render_to_response('tablon/foro.html',
RequestContext(request, {
'foro': foro,
'lista_temas': lista_temas,
}))
@tema_can('read')
def tema(request, tema_id):
tema = get_object_or_404(Tema, pk=tema_id)
foro = tema.foro
lista_mensajes = tema.mensaje_set.all()
if request.user.is_authenticated():
try:
v = Visita.objects.get(usuario=request.user.id, tema=tema_id)
ult_visita = v.fecha
v.fecha = timezone.now()
except Visita.DoesNotExist:
v = Visita(usuario=request.user, tema=tema)
ult_visita = timezone.min
v.save()
else:
ult_visita = timezone.now()
visitados = {}
for m in lista_mensajes:
if (m.created_on > ult_visita):
visitados[m.id] = 1
return render_to_response('tablon/tema.html',
RequestContext(request, {
'foro': foro,
'tema': tema,
'lista_mensajes': lista_mensajes,
'ult_visita': ult_visita,
'visitados': visitados,
}))
@foro_can('write')
def nuevo_tema(request, foro_id):
if request.POST:
usuario = request.user
foro = get_object_or_404(Foro, pk=foro_id)
tema = Tema(id=None,
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:
foro = get_object_or_404(Foro, pk=foro_id)
form = MensajeForm()
return render_to_response('tablon/nuevo_tema.html',
RequestContext(request, {
'form': form,
'foro': foro,
}))
@tema_can('write')
def responder(request, tema_id):
if request.POST:
tema = get_object_or_404(Tema, pk=tema_id)
mensaje = Mensaje(id=None,
titulo=request.POST['titulo'],
texto=request.POST['texto'],
tema=tema,
autor=request.user,
)
mensaje.save()
return HttpResponseRedirect('/tablon/tema/%s/' % tema.id)
else:
tema = get_object_or_404(Tema, pk=tema_id)
foro = tema.foro
form = MensajeForm()
return render_to_response('tablon/responder.html',
RequestContext(request, {
'form': form,
'foro': foro,
'tema': tema,
}))
|