91 lines
3.6 KiB
Python
91 lines
3.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from django.db import models
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from passerelle.base.models import BaseResource
|
|
from passerelle.utils.api import endpoint
|
|
from passerelle.utils.jsonresponse import APIError
|
|
import psycopg2
|
|
|
|
class UnicityReunionConnector(BaseResource):
|
|
|
|
form_id = models.IntegerField(default=0, verbose_name=_(u'Id du formulaire'))
|
|
db_host = models.CharField(blank=True, max_length=128, verbose_name=_(u'Hostname/ip de la base de données'))
|
|
db_port = models.IntegerField(default=5432, verbose_name=_(u'Port'))
|
|
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 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',
|
|
parameters={
|
|
'siren': {'description': _(u'SIREN'),
|
|
'example_value': u'77567227216096'},
|
|
'annee': {'description': _(u'Année')}
|
|
}
|
|
)
|
|
def unicite_siren_annee(self, request, siren, 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_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)
|
|
finally:
|
|
if(connection):
|
|
cursor.close()
|
|
connection.close()
|
|
|
|
return {'data': record}
|
|
|