models.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from django.contrib.contenttypes.models import ContentType
  2. from django.core.urlresolvers import reverse
  3. from django.db import models
  4. class AdminURLMixin(object):
  5. def get_admin_url(self):
  6. content_type = ContentType.objects.get_for_model(self.__class__)
  7. return reverse("admin:%s_%s_change" % (
  8. content_type.app_label,
  9. content_type.model),
  10. args=(self.id,))
  11. class Authority(models.Model, AdminURLMixin):
  12. class Meta:
  13. ordering = ['name']
  14. verbose_name = 'Authorité'
  15. name = models.CharField(max_length=200)
  16. slug = models.SlugField(unique=True)
  17. def __str__(self):
  18. return self.name
  19. class ReferenceType(models.Model, AdminURLMixin):
  20. class Meta:
  21. ordering = ['name']
  22. verbose_name = 'Type de référence'
  23. name = models.CharField(max_length=200, verbose_name='Type de référence')
  24. slug = models.SlugField(unique=True)
  25. def __str__(self):
  26. return self.name
  27. class Reference(models.Model, AdminURLMixin):
  28. class Meta:
  29. ordering = ['issued_date']
  30. verbose_name = 'Référence'
  31. identifier = models.CharField(max_length=200, blank=True, verbose_name='Identifiant')
  32. number = models.CharField(max_length=200, blank=True, verbose_name='Numéro')
  33. authority = models.ForeignKey('Authority', null=True, help_text='L\'instance qui à produit cette référence', blank=True)
  34. reference_type = models.ForeignKey('ReferenceType', verbose_name='Type')
  35. title = models.TextField(verbose_name='Titre')
  36. title_short = models.TextField(verbose_name='Titre court')
  37. section = models.CharField(max_length=200, blank=True, verbose_name='Section')
  38. ecli = models.CharField(max_length=200, blank=True, verbose_name='E.C.L.I.')
  39. url = models.URLField(max_length=200, blank=True)
  40. comments = models.TextField(blank=True, verbose_name='Commentaires')
  41. issued_date = models.DateField(null=True, blank=True, verbose_name='Date de publication')
  42. disabled = models.BooleanField(default=False, verbose_name='Désactivé', help_text='Masque cette entrée lors de recherches')
  43. def __str__(self):
  44. return self.identifier + ' > ' + self.title_short