add SIH support
This commit is contained in:
parent
776fac623a
commit
01d86b9a28
|
@ -183,7 +183,9 @@
|
|||
margin: 0 0 15px 0;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions ul.demande li,
|
||||
.formdef-suivi-dossier-pa ul#evolutions ul.demande li {
|
||||
.formdef-suivi-dossier-pa ul#evolutions ul.demande li,
|
||||
.formdef-suivi-dossier-ph ul#evolutions ul.Recevabilité li,
|
||||
.formdef-suivi-dossier-pa ul#evolutions ul.Recevabilité li {
|
||||
margin: 0;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions span.step,
|
||||
|
@ -256,12 +258,22 @@
|
|||
/* Opinions */
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Accord,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Accord,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Attribution,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Attribution,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Rejet,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Rejet,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Non,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Non,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Refus,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Refus,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.suspension,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.suspension {
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.suspension,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.sursis,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.sursis,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Sursis,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Sursis,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.NAS,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.NAS {
|
||||
width: 20px;
|
||||
height: 30px;
|
||||
float: left;
|
||||
|
@ -270,17 +282,41 @@
|
|||
margin-right: 10px;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.suspension,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.suspension {
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.suspension,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.sursis,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.sursis,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Sursis,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Sursis,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.NAS,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.NAS {
|
||||
height: 15px;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Accord:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Accord:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Attribution:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Attribution:before {
|
||||
content: "✔";
|
||||
border: solid 1px #48b24e;
|
||||
width: 11px;
|
||||
height: 8px;
|
||||
color: #48b24e;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Rejet:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Rejet:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Refus:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Refus:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.suspension:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.suspension:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.sursis:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.sursis:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Sursis:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Sursis:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.NAS:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.NAS:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Accord:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Accord:before {
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Accord:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Non:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Non:before {
|
||||
content: "✖";
|
||||
margin: 0;
|
||||
border: none;
|
||||
|
@ -295,23 +331,21 @@
|
|||
color:#e20612;
|
||||
border: solid 1px #e20612;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Accord:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Accord:before {
|
||||
content: "✔";
|
||||
border: solid 1px #48b24e;
|
||||
width: 11px;
|
||||
height: 8px;
|
||||
color: #48b24e;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.suspension:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.suspension:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.sursis:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.sursis:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.Sursis:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.Sursis:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.NAS:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.NAS:before,
|
||||
.formdef-suivi-dossier-ph ul#evolutions div.mais:before,
|
||||
.formdef-suivi-dossier-pa ul#evolutions div.mais:before {
|
||||
content: "...";
|
||||
border: solid 1px #ff782a;
|
||||
padding: 7px 4px 0 3px;
|
||||
height: 10px;
|
||||
color:#ff782a;
|
||||
border: solid 1px #ff782a;
|
||||
}
|
||||
.formdef-suivi-dossier-ph ul#evolutions span.noOpinion,
|
||||
.formdef-suivi-dossier-pa ul#evolutions span.noOpinion {
|
||||
|
@ -481,6 +515,18 @@
|
|||
.formdef-suivi-dossier-ph div.form-link:hover h4 a {
|
||||
color: #fff;
|
||||
}
|
||||
.formdef-suivi-dossier-ph div#rub_service form div.buttons,
|
||||
.formdef-suivi-dossier-ph div#rub_service form div.buttons {
|
||||
position: relative;
|
||||
z-index: 99999;
|
||||
}
|
||||
.formdef-suivi-dossier-ph div#rub_service span#msgpieces,
|
||||
.formdef-suivi-dossier-ph div#rub_service span#msgpieces {
|
||||
|
||||
left: -40px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* PA specific */
|
||||
.formdef-suivi-dossier-pa ul#evolutions ul.modalites li {
|
||||
margin:0;
|
||||
|
|
|
@ -87,7 +87,7 @@ class grandlyonIodas(BaseResource):
|
|||
@endpoint(perm='can_access')
|
||||
def getProcedures(self, request, nom, pren, datenais, dpap, typepro):
|
||||
# Params in the order required by the WSDL from stambia
|
||||
resp = self.get_client().service.ODA_getProcedures(dpap, typepro, datenais, nom, pren)
|
||||
resp = self.get_client().service.ODA_getProceduresSIH(dpap, typepro, datenais, nom, pren)
|
||||
data = sudsobject_to_dict(resp)
|
||||
# Counts procedures to get the last procedure
|
||||
nbProc = (len(data['procedures']['procedures']['procedure']) - 1) if 'procedures' in data else ''
|
||||
|
@ -107,6 +107,46 @@ class grandlyonIodas(BaseResource):
|
|||
'libl': data['procedures']['procedures']['procedure'][nbProc]['libl'] if 'procedures' in data else '',
|
||||
'etapes': sorted(data['procedures']['procedures']['procedure'][nbProc]['etapes']['etape'], key=lambda x: x['id'], reverse=True) if 'procedures' in data else '',
|
||||
'droits': droits,
|
||||
'recevabilite': data['procedures']['procedures']['procedure'][nbProc]['recevabilite'] if 'recevabilite' in data['procedures']['procedures']['procedure'][nbProc] else '',
|
||||
'found': 1 if 'procedures' in data else 0}
|
||||
|
||||
@endpoint(perm='can_access')
|
||||
def getProceduresInt(self, request, nom, pren, datenais, dpap, typepro):
|
||||
|
||||
# Tests
|
||||
#print >> open('/home/grandlyon/marln/debug.test', 'a+'), " * * * * * "
|
||||
#resp1 = self.get_client().service.ODA_getProcedures(dpap, typepro, datenais, nom, pren)
|
||||
#resp2 = self.get_client().service.ODA_getProceduresInt(dpap, typepro, datenais, nom, pren)
|
||||
#if resp1 :
|
||||
#print >> open('/home/grandlyon/marln/debug.test', 'a+'), "resp1"
|
||||
#if resp2 :
|
||||
#print >> open('/home/grandlyon/marln/debug.test', 'a+'), "resp2"
|
||||
#data1 = sudsobject_to_dict(resp1)
|
||||
#data2 = sudsobject_to_dict(resp2)
|
||||
|
||||
|
||||
# Params in the order required by the WSDL from stambia
|
||||
resp = self.get_client().service.ODA_getProceduresInt(dpap, typepro, datenais, nom, pren)
|
||||
data = sudsobject_to_dict(resp)
|
||||
# Counts procedures to get the last procedure
|
||||
nbProc = (len(data['procedures']['procedures']['procedure']) - 1) if 'procedures' in data else ''
|
||||
# recupere la liste des droits en cours de toutes les procedures d'un individu
|
||||
droits = []
|
||||
if 'procedures' in data :
|
||||
for procedure in data['procedures']['procedures']['procedure'] :
|
||||
for etape in procedure['etapes']['etape'] :
|
||||
if 'taches' in etape :
|
||||
for tache in etape['taches']['tache'] :
|
||||
if tache['idtypetache'] == 2 and datetime.strptime(tache['datearret'], "%d/%m/%Y") > datetime.now():
|
||||
for nb in [3,6] :
|
||||
deltafindroit = nb if (datetime.strptime(tache['datearret'], "%d/%m/%Y") - dateutil.relativedelta.relativedelta(months=nb)) == datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) else 0
|
||||
droits.append({"libl":tache['produit']['libl'], "dateproposition":tache['dateproposition'], "datearret":tache['datearret'], "dateeffet":tache['dateeffet'], "deltafindroit":deltafindroit})
|
||||
return {'hash': hashlib.sha224(json.dumps(data)).hexdigest(),
|
||||
#'libl': data['procedures']['procedures']['procedure'][nbProc]['libl'] if 'procedures' in data else '',
|
||||
'libl': data['procedures']['procedures']['procedure'][nbProc]['libl'] if 'procedures' in data else '',
|
||||
'etapes': sorted(data['procedures']['procedures']['procedure'][nbProc]['etapes']['etape'], key=lambda x: x['id'], reverse=True) if 'procedures' in data else '',
|
||||
'droits': droits,
|
||||
#'test': data['procedures']['procedures']['procedure'][0],
|
||||
'found': 1 if 'procedures' in data else 0}
|
||||
|
||||
@endpoint(perm='can_access')
|
||||
|
@ -133,3 +173,108 @@ class grandlyonIodas(BaseResource):
|
|||
'procedures': procedures,
|
||||
#'etapes': sorted(data['procedurespa']['procedurespa']['procedurepa'][nbProc]['etapes']['etape'], key=lambda x: x['id'], reverse=True) if 'procedures' in data else '',
|
||||
'found': 1 if 'procedurespa' in data else 0}
|
||||
|
||||
@endpoint(perm='can_access')
|
||||
def getTest(self, request, container):
|
||||
import urllib2
|
||||
import base64
|
||||
import dateutil.parser
|
||||
from collections import defaultdict
|
||||
from xml.etree import cElementTree as ET
|
||||
|
||||
# Convert XML to dict
|
||||
def etree_to_dict(t):
|
||||
d = {t.tag: {} if t.attrib else None}
|
||||
children = list(t)
|
||||
if children:
|
||||
dd = defaultdict(list)
|
||||
for dc in map(etree_to_dict, children):
|
||||
for k, v in dc.items():
|
||||
dd[k.replace('{http://www.opengroup.org/xsd/omi/1.0/}','').replace('{http://www.opengroup.org/xsd/odf/1.0/}','')].append(v)
|
||||
d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}}
|
||||
if t.attrib:
|
||||
d[t.tag].update((k, v) for k, v in t.attrib.items())
|
||||
if t.text:
|
||||
text = t.text.strip()
|
||||
if children or t.attrib:
|
||||
if text:
|
||||
d[t.tag]['text'] = text
|
||||
else:
|
||||
d[t.tag] = text
|
||||
return d
|
||||
|
||||
url = 'https://biotope-omi.alpha.grandlyon.com'
|
||||
|
||||
# Get container and sensor from csv file with ID from data.grandlyon.com
|
||||
reqContainer = requests.get('https://passerelle.guichet-dev.grandlyon.com/csvdatasource/biotope/data?q='+container)
|
||||
container = reqContainer.json()
|
||||
|
||||
# Get container
|
||||
containerDict={}
|
||||
if container['data'][0]['id'] and container['data'][0]['id'] != '' and len(container['data'][0]['id']) > 14 :
|
||||
payload='<omiEnvelope xmlns="http://www.opengroup.org/xsd/omi/1.0/" version="1.0" ttl="0">'
|
||||
payload+='<read msgformat="odf">'
|
||||
payload+='<msg>'
|
||||
payload+='<Objects xmlns="http://www.opengroup.org/xsd/odf/1.0/">'
|
||||
payload+='<Object>'
|
||||
payload+='<id>Organization:Mineris-V1.0.0</id>'
|
||||
payload+='<Object>'
|
||||
payload+='<id>Deployment:Bottle_Bank</id>'
|
||||
payload+='<Object>'
|
||||
payload+='<id>'+container['data'][0]['id']+'</id>'
|
||||
payload+='</Object>'
|
||||
payload+='</Object>'
|
||||
payload+='</Object>'
|
||||
payload+='</Objects>'
|
||||
payload+='</msg>'
|
||||
payload+='</read>'
|
||||
payload+='</omiEnvelope>'
|
||||
head = {"Content-type": "application/xml"}
|
||||
req = requests.post(url, headers=head, data=payload)
|
||||
# XML result to dict
|
||||
containerRes = ET.XML(req.text.encode('utf8'))
|
||||
containerDict = etree_to_dict(containerRes)
|
||||
|
||||
# Get sensor
|
||||
sensorDict={}
|
||||
if container['data'][0]['sensor'] and container['data'][0]['sensor'] != '' :
|
||||
payloadSensor='<omiEnvelope xmlns="http://www.opengroup.org/xsd/omi/1.0/" version="1.0" ttl="0">'
|
||||
payloadSensor+='<read msgformat="odf">'
|
||||
payloadSensor+='<msg>'
|
||||
payloadSensor+='<Objects xmlns="http://www.opengroup.org/xsd/odf/1.0/">'
|
||||
payloadSensor+='<Object>'
|
||||
payloadSensor+='<id>Organization:SigrenEa-V1.1.0</id>'
|
||||
payloadSensor+='<Object>'
|
||||
payloadSensor+='<id>Deployment:Bottle_Bank:1edd171c-5f2d-11e8-a6ab-10604b7fb2e7</id>'
|
||||
payloadSensor+='<Object>'
|
||||
payloadSensor+='<id>'+container['data'][0]['sensor']+'</id>'
|
||||
payloadSensor+='</Object>'
|
||||
payloadSensor+='</Object>'
|
||||
payloadSensor+='</Object>'
|
||||
payloadSensor+='</Objects>'
|
||||
payloadSensor+='</msg>'
|
||||
payloadSensor+='</read>'
|
||||
payloadSensor+='</omiEnvelope>'
|
||||
headSensor = {"Content-type": "application/xml"}
|
||||
reqSensor = requests.post(url, headers=headSensor, data=payloadSensor)
|
||||
# XML result to dict
|
||||
sensRes = ET.XML(reqSensor.text.encode('utf8'))
|
||||
sensorDict = etree_to_dict(sensRes)
|
||||
|
||||
# Build result dict
|
||||
result = {}
|
||||
if containerDict :
|
||||
# Container info
|
||||
for item in containerDict["{http://www.opengroup.org/xsd/omi/1.0/}omiEnvelope"]["response"]["result"]["msg"]["Objects"]["Object"]["Object"]["Object"]["InfoItem"] :
|
||||
result.update({ item["name"].replace('schema:','') : dateutil.parser.parse(item["value"]["text"]).strftime("%d/%m/%Y") if "date" in item["name"] else item["value"]["text"] })
|
||||
if sensorDict :
|
||||
# Id Container
|
||||
result.update({'idContainer':sensorDict["{http://www.opengroup.org/xsd/omi/1.0/}omiEnvelope"]["response"]["result"]["msg"]["Objects"]["Object"]["Object"]["Object"]["Object"]["Object"]['id']})
|
||||
# Sensor info
|
||||
for item in sensorDict["{http://www.opengroup.org/xsd/omi/1.0/}omiEnvelope"]["response"]["result"]["msg"]["Objects"]["Object"]["Object"]["Object"]["Object"]["Object"]["InfoItem"] :
|
||||
result.update({ item["name"].replace('schema:','').replace('FIWARE:','') : item["value"]["text"] })
|
||||
for subItem in sensorDict["{http://www.opengroup.org/xsd/omi/1.0/}omiEnvelope"]["response"]["result"]["msg"]["Objects"]["Object"]["Object"]["Object"]["Object"]["Object"]["Object"] :
|
||||
if 'InfoItem' in subItem :
|
||||
result.update({subItem['id'].replace('Container:',''):subItem['InfoItem']})
|
||||
|
||||
return result
|
||||
|
|
Loading…
Reference in New Issue