# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab: from django.db import models from django.contrib.auth.models import User from django.contrib.auth.models import Group from django.forms import ModelForm, Textarea from django import forms class Foro(models.Model): nombre = models.CharField(max_length=200) descripcion = models.CharField(max_length=300) global_read = models.BooleanField() global_write = models.BooleanField() def __repr__(self): return self.nombre def __unicode__(self): return self.nombre def numero_temas(self): return self.tema_set.count() numero_temas.short_description = "Nº temas" def numero_mensajes(self): res = 0 for t in self.tema_set.all(): res += t.mensaje_set.count() return res numero_mensajes.short_description = "Nº mensajes" class Tema(models.Model): foro = models.ForeignKey(Foro) autor = models.ForeignKey(User) titulo = models.CharField(max_length=200) created_on = models.DateTimeField(auto_now_add=True) updated_on = models.DateTimeField(auto_now=True) class Meta: ordering = ['-created_on'] get_latest_by = "created_on" def __repr__(self): return self.titulo def ultimo_mensaje(self): return self.mensaje_set.latest() class TemaForm(ModelForm): class Meta: model = Tema fields = ('titulo',) class Mensaje(models.Model): tema = models.ForeignKey(Tema) autor = models.ForeignKey(User) titulo = models.CharField(max_length=200) texto = models.TextField() created_on = models.DateTimeField(auto_now_add=True) updated_on = models.DateTimeField(auto_now=True) class Meta: ordering = ['created_on'] get_latest_by = "created_on" def __repr__(self): return self.titulo def es_nuevo(fecha): return created_on >= fecha class MensajeForm(ModelForm): texto = forms.CharField(widget=forms.Textarea(attrs={'cols': 80, 'rows': 20})) class Meta: model = Mensaje fields = ('titulo', 'texto') class Visita(models.Model): usuario = models.ForeignKey(User) tema = models.ForeignKey(Tema) fecha = models.DateTimeField(auto_now=True) def ultimaVisita(usuario, tema): objects.find(usuario=usuario, tema=tema) class PermisoForo(models.Model): foro = models.ForeignKey(Foro) grupo = models.ForeignKey(Group) can_read = models.BooleanField() can_write = models.BooleanField()