from django.contrib.contenttypes.models import ContentType from django.core.urlresolvers import reverse from django.db import models class AdminURLMixin(object): def get_admin_url(self): content_type = ContentType.objects.get_for_model(self.__class__) return reverse("admin:%s_%s_change" % ( content_type.app_label, content_type.model), args=(self.id,)) class Authority(models.Model, AdminURLMixin): class Meta: ordering = ['name'] verbose_name = 'Authorité' name = models.CharField(max_length=200) slug = models.SlugField(unique=True) def __str__(self): return self.name class ReferenceType(models.Model, AdminURLMixin): class Meta: ordering = ['name'] verbose_name = 'Type de référence' name = models.CharField(max_length=200, verbose_name='Type de référence') slug = models.SlugField(unique=True) def __str__(self): return self.name class Reference(models.Model, AdminURLMixin): class Meta: ordering = ['issued_date'] verbose_name = 'Référence' identifier = models.CharField(max_length=200, blank=True, verbose_name='Identifiant') number = models.CharField(max_length=200, blank=True, verbose_name='Numéro') authority = models.ForeignKey('Authority', null=True, help_text='L\'instance qui à produit cette référence', blank=True) reference_type = models.ForeignKey('ReferenceType', verbose_name='Type') title = models.TextField(blank=True, verbose_name='Titre') title_short = models.TextField(blank=True, verbose_name='Titre court') section = models.CharField(max_length=200, blank=True, verbose_name='Section') ecli = models.CharField(max_length=200, blank=True, verbose_name='E.C.L.I.') url = models.URLField(max_length=200, blank=True) comments = models.TextField(blank=True, verbose_name='Commentaires') issued_date = models.DateField(null=True, blank=True, verbose_name='Date de publication') disabled = models.BooleanField(default=False, verbose_name='Désactivé', help_text='Masque cette entrée lors de recherches') def __str__(self): return self.identifier + ' > ' + self.title_short