Ajout du test par iban, table en paramètre et année facultative

This commit is contained in:
Thomas Dijoux 2020-03-27 08:46:23 +01:00
parent 859ff16e3e
commit 78cdd95035
2 changed files with 64 additions and 3 deletions

View File

@ -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'),
),
]

View File

@ -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)