Browse Source

Integration d'un nouveau endpoint

Maxime Raynal 7 years ago
parent
commit
f437cd15ba

+ 71 - 0
speed_rack/backoffice/migrations/0014_auto_20170919_2004.py

@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.4 on 2017-09-19 18:04
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('backoffice', '0013_auto_20170827_1614'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='reference',
+            name='update_date',
+            field=models.DateTimeField(auto_now=True),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='comments',
+            field=models.TextField(blank=True, verbose_name='Commentaires'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='disabled',
+            field=models.BooleanField(default=False, help_text='Masque cette entrée lors de recherches', verbose_name='Désactivé'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='ecli',
+            field=models.CharField(blank=True, max_length=200, verbose_name='E.C.L.I.'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='identifier',
+            field=models.CharField(blank=True, max_length=200, verbose_name='Identifiant'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='issued_date',
+            field=models.DateField(blank=True, null=True, verbose_name='Date de publication'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='number',
+            field=models.CharField(blank=True, max_length=200, verbose_name='Numéro'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='reference_type',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backoffice.ReferenceType', verbose_name='Type'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='section',
+            field=models.CharField(blank=True, max_length=200, verbose_name='Section'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='title',
+            field=models.TextField(blank=True, verbose_name='Titre'),
+        ),
+        migrations.AlterField(
+            model_name='reference',
+            name='title_short',
+            field=models.TextField(blank=True, verbose_name='Titre court'),
+        ),
+    ]

+ 24 - 0
speed_rack/backoffice/models.py

@@ -53,8 +53,32 @@ class Reference(models.Model, AdminURLMixin):
     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
+
+
 

+ 1 - 0
speed_rack/webapp/urls.py

@@ -6,5 +6,6 @@ urlpatterns = [
     url(r'^search$', views.search, name='search'),
     url(r'^find-(?P<id>[0-9]+)$', views.find, name='find'),
     url(r'^export$', views.export, name='export'),
+    url(r'^references\.yml$', views.export_global, name='export'),
     url(r'^$', views.index, name='index'),
 ]

+ 17 - 18
speed_rack/webapp/views.py

@@ -55,24 +55,7 @@ def export(request):
     formated_data = list()
 
     for ref in query_set:
-        ref_data = dict()
-        ref_data['type'] = ref.reference_type.name
-        ref_data['id'] = ref.identifier
-        ref_data['authority'] = ref.authority.name
-        if ref.issued_date is not None:
-            ref_data['issued'] = dict()
-            ref_data['issued']['year'] = ref.issued_date.year
-            ref_data['issued']['month'] = ref.issued_date.month
-            ref_data['issued']['day'] = ref.issued_date.day
-        ref_data['title'] = ref.title
-        ref_data['title-short'] = ref.title_short
-        ref_data['number'] = ref.number
-        ref_data['ECLI'] = ref.ecli
-        ref_data['URL'] = ref.url
-        ref_data['comments'] = ref.comments
-
-        formated_data.append(ref_data)
-
+        formated_data.append(ref.to_array())
 
     yml_data = yaml.dump({'references': formated_data}, explicit_start=True, encoding='utf8')
 
@@ -80,6 +63,22 @@ def export(request):
     response['Content-Disposition'] = 'filename=export.yml'
     return response
 
+def export_global(request):
+    refs = Reference.objects.all().filter(disabled=False).order_by('-update_date')
+
+    formated_data = list()
+
+    for ref in refs:
+        formated_data.append(ref.to_array())
+
+    last_update_date = refs[0].update_date
+
+    yml_data = yaml.dump({'references': formated_data}, explicit_start=True, encoding='utf8')
+    response = HttpResponse(yml_data, content_type='text/yaml')
+    response['Last-Modified'] = last_update_date.strftime("%a, %d %b %Y %X GMT")
+    response['Content-Disposition'] = 'filename=references.yml'
+    return response
+
 def empty(dic, key):
     return key not in dic or not dic[key]