123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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')
- update_date = models.DateTimeField(auto_now=True)
- def __str__(self):
- return self.identifier + ' > ' + self.title_short
- def to_array(self):
- ref_data = dict()
- ref_data['type'] = self.reference_type.name
- ref_data['id'] = self.identifier
- if self.authority:
- ref_data['authority'] = self.authority.name
- if self.issued_date is not None:
- ref_data['issued'] = dict()
- ref_data['issued']['year'] = self.issued_date.year
- ref_data['issued']['month'] = self.issued_date.month
- ref_data['issued']['day'] = self.issued_date.day
- ref_data['title'] = self.title
- ref_data['title-short'] = self.title_short
- ref_data['number'] = self.number
- ref_data['ECLI'] = self.ecli
- ref_data['URL'] = self.url
- ref_data['comments'] = self.comments
- return ref_data
|