#! -*- encoding: utf-8 -*- from datetime import datetime from django.db import models from djangofr.tagging.fields import TagField from djangofr.tagging.models import Tag LANGUAGES = ( ('Fr', 'Francais'), ('En', 'Anglais'), ) class LinkManager(models.Manager): def get_query_set(self): """ Retrieve only published links. """ qs = super(LinkManager, self).get_query_set() return qs.filter(is_online=True) class Link(models.Model): title = models.CharField('Titre', max_length=200) slug = models.SlugField( 'Ancre', prepopulate_from=('title',), help_text='Pour un accès direct sur la page des liens.' ) url = models.URLField( 'Adresse', help_text='Lien vers la ressource.' ) lang = models.CharField('Langue du lien', max_length=2, choices=LANGUAGES, default='En') comment = models.TextField('Commentaire', help_text='Petit paragraphe explicatif') submission_date = models.DateTimeField('Date de mise en ligne par l\'auteur') is_online = models.BooleanField('En ligne', default=False) related_tags = TagField(help_text='Tags séparés par des virgules ou des espaces') class Admin: list_display = ('title', 'url', 'is_online') list_filter = ('submission_date', 'is_online') search_fields = ('title', 'comment') date_hierarchy = 'submission_date' def __unicode__(self): return self.title def get_absolute_url(self): return "/liens/%s/#%s" % (self.submission_date.strftime("%Y/%m"), self.slug) def _get_tags(self): return Tag.objects.get_for_object(self) def _set_tags(self, tag_list): return Tag.objects.update_tags(self, tag_list) tags = property(_get_tags, _set_tags) objects = models.Manager() published = LinkManager()