Mercurial > public > sg101
view gpp/weblinks/models.py @ 191:046e6ef0ff45
Added select_related() to weblinks.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 01 Apr 2010 02:01:33 +0000 |
parents | 5c889b587416 |
children | fa7d82bfb100 |
line wrap: on
line source
''' This module contains the models for the weblinks application. ''' from django.db import models from django.contrib import auth class Category(models.Model): '''Links belong to categories''' title = models.CharField(max_length = 64) description = models.TextField(blank = True) def __unicode__(self): return self.title def num_links(self): return Link.public_objects.filter(category = self.pk).count() class Meta: verbose_name_plural = 'Categories' ordering = ('title', ) class PublicLinkManager(models.Manager): """The manager for all public links.""" def get_query_set(self): return super(PublicLinkManager, self).get_query_set().filter( is_public=True).select_related() class Link(models.Model): '''Model to represent a web link''' category = models.ForeignKey(Category) title = models.CharField(max_length=128) url = models.URLField(verify_exists=False, db_index=True) description = models.TextField(blank=True) user = models.ForeignKey(auth.models.User) date_added = models.DateField(auto_now_add=True) hits = models.IntegerField(default=0) is_public = models.BooleanField(default=False, db_index=True) # Managers: objects = models.Manager() public_objects = PublicLinkManager() class Meta: ordering = ('title', ) def __unicode__(self): return self.title @models.permalink def get_absolute_url(self): return ('weblinks-link_detail', [str(self.id)]) class FlaggedLinkManager(models.Manager): def create(self, link, user): flagged_link = FlaggedLink(link = link, user = user, approved = False) flagged_link.save() class FlaggedLink(models.Model): '''Model to represent links that have been flagged as broken by users''' link = models.ForeignKey(Link) user = models.ForeignKey(auth.models.User) date_flagged = models.DateField(auto_now_add = True) approved = models.BooleanField(default = False, help_text = 'Check this and save to remove the referenced link from the database') objects = FlaggedLinkManager() def save(self, *args, **kwargs): if self.approved: self.link.delete() self.delete() else: super(FlaggedLink, self).save(*args, **kwargs) def url(self): return self.link.url def get_link_url(self): return '<a href="%s">Link #%d</a>' % (self.link.get_absolute_url(), self.link.id) get_link_url.allow_tags = True get_link_url.short_description = "View Link on Site" def __unicode__(self): return self.link.title class Meta: ordering = ('-date_flagged', )