diff --git a/passerelle_reunion_unicite/migrations/0004_auto_20200327_0731.py b/passerelle_reunion_unicite/migrations/0004_auto_20200327_0731.py new file mode 100644 index 0000000..90d1c67 --- /dev/null +++ b/passerelle_reunion_unicite/migrations/0004_auto_20200327_0731.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2020-03-27 06:31 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('passerelle_reunion_unicite', '0003_auto_20191016_1318'), + ] + + operations = [ + migrations.AlterModelOptions( + name='unicityreunionconnector', + options={'verbose_name': 'Connecteur unicit\xe9 R\xe9gion R\xe9union'}, + ), + migrations.AddField( + model_name='unicityreunionconnector', + name='table_name', + field=models.CharField(blank=True, max_length=128, verbose_name='Nom de la table en bdd'), + ), + ] diff --git a/passerelle_reunion_unicite/models.py b/passerelle_reunion_unicite/models.py index e0a9713..993cced 100644 --- a/passerelle_reunion_unicite/models.py +++ b/passerelle_reunion_unicite/models.py @@ -15,11 +15,12 @@ class UnicityReunionConnector(BaseResource): db_user = models.CharField(blank=True, max_length=128, verbose_name=_(u'Utilisateur')) db_pass = models.CharField(blank=True, max_length=128, verbose_name=_(u'Mot de passe')) db_name = models.CharField(blank=True, max_length=128, verbose_name=_(u'Nom de la base')) + table_name = models.CharField(blank=True, max_length=128, verbose_name=_(u'Nom de la table en bdd')) category = 'Divers' class Meta: - verbose_name = u'Connecteur unicity réunion' + verbose_name = u'Connecteur unicité Région Réunion' @endpoint(description=_(u'Vérifier s\'il y a déjà une demande pour le siren pour cette année'), perm='can_access', @@ -29,7 +30,7 @@ class UnicityReunionConnector(BaseResource): 'annee': {'description': _(u'Année')} } ) - def doublon_par_siren_annee(self, request, siren, annee): + def unicite_siren_annee(self, request, siren, annee=""): try: connection = psycopg2.connect( user = self.db_user, @@ -40,7 +41,43 @@ class UnicityReunionConnector(BaseResource): ) cursor = connection.cursor() - cursor.execute("SELECT f_siren FROM wcs_view_1_cheques_numeriques WHERE status != 'draft' AND f_siren=%s AND f_annee=%s", (siren, annee)) + if annee == "": + cursor.execute("SELECT f_siren FROM " + self.table_name + " WHERE status != 'draft' AND f_siren=%s", (siren,)) + else: + cursor.execute("SELECT f_siren FROM " + self.table_name + " WHERE status != 'draft' AND f_siren=%s AND f_annee=%s", (siren, annee)) + record = cursor.fetchone() + except psycopg2.Error as e: + raise APIError(e) + finally: + if(connection): + cursor.close() + connection.close() + + return {'data': record} + + @endpoint(description=_(u'Vérifier s\'il y a déjà une demande pour l\'iban pour cette année'), + perm='can_access', + parameters={ + 'iban': {'description': _(u'IBAN'), + 'example_value': u'GR9608100010000001234567890'}, + 'annee': {'description': _(u'Année')} + } + ) + def unicite_iban_annee(self, request, iban, annee=""): + try: + connection = psycopg2.connect( + user = self.db_user, + password = self.db_pass, + host = self.db_host, + port = self.db_port, + database = self.db_name + ) + + cursor = connection.cursor() + if annee == "": + cursor.execute("SELECT f_iban FROM " + self.table_name + " WHERE status != 'draft' AND f_iban=%s", (iban,)) + else: + cursor.execute("SELECT f_iban FROM " + self.table_name + " WHERE status != 'draft' AND f_iban=%s AND f_annee=%s", (iban, annee)) record = cursor.fetchone() except psycopg2.Error as e: raise APIError(e)