models.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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(blank=True, verbose_name='Titre')
  36. title_short = models.TextField(blank=True, 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. update_date = models.DateTimeField(auto_now=True)
  44. def __str__(self):
  45. return self.identifier + ' > ' + self.title_short
  46. def to_array(self):
  47. ref_data = dict()
  48. ref_data['type'] = self.reference_type.name
  49. ref_data['id'] = self.identifier
  50. if self.authority:
  51. ref_data['authority'] = self.authority.name
  52. if self.issued_date is not None:
  53. ref_data['issued'] = dict()
  54. ref_data['issued']['year'] = self.issued_date.year
  55. ref_data['issued']['month'] = self.issued_date.month
  56. ref_data['issued']['day'] = self.issued_date.day
  57. ref_data['title'] = self.title
  58. ref_data['title-short'] = self.title_short
  59. ref_data['number'] = self.number
  60. ref_data['ECLI'] = self.ecli
  61. ref_data['URL'] = self.url
  62. ref_data['comments'] = self.comments
  63. return ref_data