# 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, }))