parsifal: add soap scripts to get data from maelis
This commit is contained in:
parent
59775cb872
commit
c4e7a50aa5
|
@ -0,0 +1,3 @@
|
|||
*.pyc
|
||||
*.xml
|
||||
*.wsdl*
|
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import requests
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import utils
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
wsdl_url = utils.get_wsdl_url(args.env, args.service)
|
||||
|
||||
# previous result
|
||||
wsdl_file_path = '%sService.wsdl' % args.service.title()
|
||||
if not os.path.exists(wsdl_file_path):
|
||||
with open(wsdl_file_path, 'w'):
|
||||
pass
|
||||
|
||||
result = requests.get(wsdl_url, verify=False)
|
||||
assert result.status_code == 200
|
||||
|
||||
# result
|
||||
last_wsdl_file_path = wsdl_file_path + '.new'
|
||||
with open(last_wsdl_file_path, 'w') as wsdl_last_file:
|
||||
wsdl_last_file.write(result.text)
|
||||
|
||||
# diff
|
||||
if args.verbose > 1:
|
||||
stdout = stderr = None
|
||||
else:
|
||||
stdout = stderr = subprocess.PIPE
|
||||
cmd = 'diff %s %s' % (wsdl_file_path, last_wsdl_file_path)
|
||||
output = subprocess.run(cmd, shell=True, check=False, stdout=stdout, stderr=stderr)
|
||||
sys.exit(output.returncode)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('service', help='family, activity, invoice or site', nargs='?', default='Family')
|
||||
args = parser.parse_args()
|
||||
check(args)
|
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.deleteBasket(
|
||||
deleteBasketRequestBean={
|
||||
'idBasket': args.basket,
|
||||
'idUtilisat': "Entr'ouvert",
|
||||
}
|
||||
)
|
||||
print(results)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('basket', nargs='?', help='basket id')
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.deletePersonUnitBasket(
|
||||
deletePersonUnitBasketRequestBean={
|
||||
'idBasketLine': args.line,
|
||||
}
|
||||
)
|
||||
print(results)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('line', nargs='?', help='basket line id')
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.deleteSubscribeActivity(
|
||||
idSubscribe=args.subscribe
|
||||
)
|
||||
print(results)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('subscribe', nargs='?', help='subscribe id (idIns du panier)')
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from django.utils.dateparse import parse_date
|
||||
from math import inf
|
||||
|
||||
def get_ages_criteria(today, start_dob, end_dob):
|
||||
ages_txt = ['<=2', '3-11', '12-17', '18-25', '26-59', '>=60']
|
||||
ages = [0, 3, 12, 18, 26, 60, 62]
|
||||
|
||||
data = []
|
||||
max_age = relativedelta(today, parse_date(start_dob[:10])).years if start_dob else inf
|
||||
min_age = relativedelta(today, parse_date(end_dob[:10])).years if end_dob else 0
|
||||
print('activity: [%s:%s]' % (min_age, max_age))
|
||||
|
||||
for i in range(0, len(ages) - 1):
|
||||
print('check for laps [%s:%s]' % (ages[i], ages[i+1] - 1))
|
||||
for age in range(ages[i], ages[i+1]):
|
||||
#print('check for age %s <= %s <= %s (%s)' % (min_age, age, max_age, bool(min_age <= age <= max_age)))
|
||||
if (min_age <= age <= max_age):
|
||||
print('found %s' % ages_txt[i])
|
||||
data.append((i, ages_txt[i]))
|
||||
break
|
||||
return data
|
||||
|
||||
|
||||
today = parse_date('2023-01-01')
|
||||
print(get_ages_criteria(today, '1964-01-01', '1964-01-01'))
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
FAMILY_ID = '322573' # NICO
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.getFamilyBasket(
|
||||
getFamilyBasketRequestBean={
|
||||
'numFamily': args.family,
|
||||
}
|
||||
)
|
||||
print(results)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('--family', '-f', default=FAMILY_ID, help='family id')
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,70 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from zeep.helpers import serialize_object
|
||||
|
||||
import utils
|
||||
|
||||
FAMILY_ID = '322573' # NICO
|
||||
PERSON_ID = '263781' # BART
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.getPersonCatalogueActivity(
|
||||
getPersonCatalogueActivityRequestBean={
|
||||
'numDossier': args.family,
|
||||
'numPerson': args.person,
|
||||
|
||||
# facultatif, pour fitrer sur une nature d'activité
|
||||
#'codeNatureActivity': None, # 'P' ou 'V'
|
||||
|
||||
# facultatif, ne fait que retirer des lignes
|
||||
#'yearSchool': '2022', # aucune influence ici
|
||||
#'dateStartActivity': '2022-09-01',
|
||||
#'dateEndActivity': '2023-08-01',
|
||||
})
|
||||
|
||||
if args.dump:
|
||||
print(json.dumps(serialize_object(results), cls=utils.DjangoJSONEncoder, indent=2))
|
||||
return
|
||||
|
||||
for activity in results['catalogueActivityList']:
|
||||
print('* %s / %s' % ( # / %s' % (
|
||||
activity['activity']['idActivity'],
|
||||
activity['activity']['libelle1'],
|
||||
#activity['activity']['libelle2'],
|
||||
))
|
||||
|
||||
#print(' calendarGeneration: %s' % activity['activity']['calendarGeneration']['code'])
|
||||
if activity['activity']['activityType']:
|
||||
print(' type: %s / %s' % (
|
||||
activity['activity']['activityType']['code'],
|
||||
activity['activity']['activityType']['natureSpec']['code'],
|
||||
))
|
||||
else:
|
||||
print("' type: no activity type")
|
||||
#print(' weeklyCalendarActivityList: %s' %
|
||||
# bool('weeklyCalendarActivityList' in activity['activity']))
|
||||
#print(' openDayList: %s' % len(activity['openDayList']))
|
||||
|
||||
for unit in activity['unitInfoList']:
|
||||
print(' * %s / %s' % (unit['idUnit'], unit['libelle']))
|
||||
#print(' places: %s' % len(unit['placeInfoList']))
|
||||
for item in unit['placeInfoList']:
|
||||
place = item['place']
|
||||
print(' * %s : (x/y: %s/%s)' % (place['lib1'], place['longitude'], place['latitude']))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('--dump', '-d', default=False, action='store_true', help='dump')
|
||||
parser.add_argument('--family', nargs='?', default=FAMILY_ID, help='family id')
|
||||
parser.add_argument('--person', nargs='?', default=PERSON_ID, help='person id')
|
||||
args = parser.parse_args()
|
||||
check(args)
|
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
# $ curl 'https://parsifal-passerelle.dev.publik.love/toulouse-maelis/test/read-child-agenda?family_id=322426&child_id=261828&start_date=2023-01-01&end_date=2023-01-10' | json_pp
|
||||
res = client.service.getPersonScheduleList(
|
||||
requestBean={
|
||||
# https://redmine.sigec.fr/issues/1936
|
||||
'numDossier': '249548', # LAMBERT
|
||||
'numPerson': '163145', # ROMAIN
|
||||
'year': '2023',
|
||||
'month': '3',
|
||||
#'idAct': 'A10049327689',
|
||||
}
|
||||
)
|
||||
print(res)
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
args = parser.parse_args()
|
||||
check(args)
|
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import requests
|
||||
import zeep
|
||||
from zeep.helpers import serialize_object
|
||||
|
||||
import utils
|
||||
|
||||
FAMILY_ID = '322573' # NICO
|
||||
PERSON_ID = '263781' # BART
|
||||
ACTIVITY_ID = 'A10055227963'
|
||||
UNIT_ID = 'A10055227965'
|
||||
PLACE_ID = 'A10055129635'
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.getPersonUnitInfo(
|
||||
getPersonUnitInfoRequestBean={
|
||||
'numDossier': args.family,
|
||||
'numPerson': args.person,
|
||||
|
||||
'activityUnitPlace': {
|
||||
'idActivity': args.activity,
|
||||
'idUnit': args.unit,
|
||||
'idPlace': args.place,
|
||||
},
|
||||
|
||||
'dateRef': None, # si nulle, date du jour
|
||||
}
|
||||
)
|
||||
|
||||
if args.dump:
|
||||
print(results)
|
||||
exit(0)
|
||||
|
||||
print('* %s / %s / %s' % (
|
||||
results['activity']['idActivity'],
|
||||
results['activity']['libelle1'],
|
||||
results['activity']['libelle2'],
|
||||
))
|
||||
print(' control: %s / %s' % (
|
||||
results['controlResult']['controlOK'],
|
||||
results['controlResult']['message'],
|
||||
))
|
||||
print(' calendarGeneration: %s' % results['calendarGeneration']['code'])
|
||||
print(' type: %s / %s' % (
|
||||
results['activity']['activityType']['code'],
|
||||
results['activity']['activityType']['natureSpec']['code'],
|
||||
))
|
||||
print(' weeklyCalendarActivityList: %s' %
|
||||
bool('weeklyCalendarActivityList' in results))
|
||||
|
||||
print(' openDayList: %s' % len(results['openDayList']))
|
||||
|
||||
print(' unit: %s / %s' % (results['unit']['idUnit'], results['unit']['libelle']))
|
||||
print(' place: %s / %s' % (results['place']['idPlace'], results['place']['lib1']))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('--dump', '-d', default=False, action='store_true', help='dump')
|
||||
parser.add_argument('--family', '-f', nargs='?', default=FAMILY_ID, help='family id')
|
||||
parser.add_argument('--person', '-P', nargs='?', default=PERSON_ID, help='person id')
|
||||
parser.add_argument('--activity', '-a', nargs='?', default=ACTIVITY_ID, help='activity id')
|
||||
parser.add_argument('--unit', '-u', nargs='?', default=UNIT_ID, help='unit id')
|
||||
parser.add_argument('--place', '-p', nargs='?', default=PLACE_ID, help='place id')
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
FAMILY_ID = '322573' # NICO
|
||||
PERSON_ID = '263781' # BART
|
||||
|
||||
def activity_info(args, client, activity_id, unit_id, text_id):
|
||||
|
||||
results = client.service.getPersonUnitInfo(
|
||||
getPersonUnitInfoRequestBean={
|
||||
'numDossier': args.family,
|
||||
'numPerson': args.person,
|
||||
'activityUnitPlace': {
|
||||
'idActivity': activity_id,
|
||||
'idUnit': unit_id,
|
||||
'idPlace': text_id,
|
||||
},
|
||||
'dateRef': None, # si nulle, date du jour
|
||||
}
|
||||
)
|
||||
print('* %s / %s / %s\n' % (activity_id, unit_id, text_id))
|
||||
if args.dump:
|
||||
print(results)
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.getPersonCatalogueActivity(
|
||||
getPersonCatalogueActivityRequestBean={
|
||||
'numDossier': args.family,
|
||||
'numPerson': args.person,
|
||||
# facultatif, pour fitrer sur une nature d'activité
|
||||
'codeNatureActivity': None, # 'P' ou 'V'
|
||||
# facultatif, ne fait que retirer des lignes
|
||||
'yearSchool': '2022', # aucune influence ici
|
||||
'dateStartActivity': '2022-09-01',
|
||||
'dateEndActivity': '2023-08-01',
|
||||
})
|
||||
|
||||
for activity in results['catalogueActivityList']:
|
||||
activity_id = activity['activity']['idActivity']
|
||||
activity_text = activity['activity']['libelle1']
|
||||
|
||||
for unit in activity['unitInfoList']:
|
||||
unit_id = unit['idUnit']
|
||||
unit_text = unit['libelle']
|
||||
for place in unit['placeInfoList']:
|
||||
place_id = place['place']['idPlace']
|
||||
place_text = place['place']['lib1']
|
||||
print('\n=== %s - %s - %s ===' % (activity_text, unit_text, place_text))
|
||||
activity_info(args, client, activity_id, unit_id, place_id)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('--dump', '-d', default=False, action='store_true', help='dump')
|
||||
parser.add_argument('--family', nargs='?', default=FAMILY_ID, help='family id')
|
||||
parser.add_argument('--person', nargs='?', default=PERSON_ID, help='person id')
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,100 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import pprint
|
||||
from zeep.helpers import serialize_object
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
|
||||
results = client.service.readActivityList(
|
||||
schoolyear=2022,
|
||||
#schoolyear=2023, # si je fais ça je perd "A10049327682 / RESTAURATION SCOLAIRE 22/23"
|
||||
dateStartCalend='2022-09-01',
|
||||
dateEndCalend='2023-08-31',
|
||||
#dateEndCalend='2022-09-01' # si je fais ça je perd "A10053187065 / Vacances Hivers 2023" et "A10053187089 / Vacances Ete 2023"
|
||||
)
|
||||
|
||||
if args.dump:
|
||||
print(json.dumps(serialize_object(results), cls=utils.DjangoJSONEncoder, indent=2))
|
||||
exit(0)
|
||||
|
||||
for activity in serialize_object(results):
|
||||
nature_code = None
|
||||
nature_lib = None
|
||||
type_code = None
|
||||
type_lib = None
|
||||
if activity['activityPortail'].get('activityType'):
|
||||
nature_code = activity['activityPortail']['activityType']['natureSpec']['code']
|
||||
nature_lib = activity['activityPortail']['activityType']['natureSpec']['libelle']
|
||||
type_code = activity['activityPortail']['activityType']['code']
|
||||
type_lib = activity['activityPortail']['activityType']['libelle']
|
||||
print('* %s / %s (nature: (%s) %s / type: (%s) %s)' % (
|
||||
activity['activityPortail']['idAct'],
|
||||
activity['activityPortail']['libelle'],
|
||||
nature_code,
|
||||
nature_lib,
|
||||
type_code,
|
||||
type_lib,
|
||||
))
|
||||
|
||||
# # # print(' schoolYear: %s' % activity['activityPortail']['schoolYear'])
|
||||
# print(' calendarGeneration: %s' % activity['activityPortail']['calendarGeneration']['code'])
|
||||
# if activity['activityPortail']['activityType']:
|
||||
# print(' type: %s / %s' % (
|
||||
# activity['activityPortail']['activityType']['code'],
|
||||
# activity['activityPortail']['activityType']['libelle'],
|
||||
# ))
|
||||
# # print(' weeklyCalendarActivityList: %s' %
|
||||
# # bool('weeklyCalendarActivityList' in activity['activityPortail']))
|
||||
# # print(' openDayList: %s' % len(activity['openDayList']))
|
||||
|
||||
# for unit in activity['unitPortailList']:
|
||||
# print(' * %s / %s' % (unit['idUnit'], unit['libelle']))
|
||||
# #print(' age: %s -> %s' % (unit['birthDateStart'], unit['birthDateEnd']))
|
||||
# #print(' places: %s' % len(unit['placeList']))
|
||||
# #for place in unit['placeList']:
|
||||
# # print(' * %s : (%s/%s)' % (place['lib'], place['longitude'], place['latitude']))
|
||||
exit(0)
|
||||
|
||||
for activity in serialize_object(results):
|
||||
if activity['activityPortail']['activityType']['natureSpec']['code'] not in ('P', 'L', 'S'):
|
||||
continue
|
||||
print('* %s / %s' % (
|
||||
activity['activityPortail']['idAct'],
|
||||
activity['activityPortail']['libelle'],
|
||||
))
|
||||
print(' nature: %s: %s' % (
|
||||
activity['activityPortail']['activityType']['natureSpec']['code'],
|
||||
activity['activityPortail']['activityType']['natureSpec']['libelle'],
|
||||
))
|
||||
print(' type: %s: %s' % (
|
||||
activity['activityPortail']['activityType']['code'],
|
||||
activity['activityPortail']['activityType']['libelle'],
|
||||
))
|
||||
exit(0)
|
||||
|
||||
data = []
|
||||
for a, activity in enumerate(serialize_object(results)):
|
||||
if activity['activityPortail']['activityType']['natureSpec']['code'] not in ('P', 'L', 'S', 'V'):
|
||||
continue
|
||||
results[a]['openDayList'] = 'hidden (%s)' % len(activity['openDayList'])
|
||||
for u, unit in enumerate(activity['unitPortailList']):
|
||||
#del result[a]['unitPortailList'][u]['placeList']
|
||||
results[a]['unitPortailList'][u]['placeList'] = 'hidden (%s)' % len(unit['placeList'])
|
||||
data.append(activity)
|
||||
pprint.pprint(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('--dump', '-d', default=False, action='store_true', help='dump')
|
||||
args = parser.parse_args()
|
||||
check(args)
|
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Activity')
|
||||
results = client.service.readActivityNatureTypeList()
|
||||
|
||||
# # loisirs
|
||||
# natures = []
|
||||
# for nature in results:
|
||||
# try:
|
||||
# int(nature['code'])
|
||||
# except ValueError:
|
||||
# is_int = False
|
||||
# else:
|
||||
# is_int = True
|
||||
# if is_int or nature['code'] in ('P', 'L', 'S'):
|
||||
# natures.append({'id': nature['code'], 'text': nature['libelle']})
|
||||
# natures.sort(key=lambda x: x['text'])
|
||||
# print(json.dumps(natures))
|
||||
# exit()
|
||||
|
||||
lefts = set()
|
||||
rights = set()
|
||||
for nature in results:
|
||||
print('* %s: %s' % (nature['code'], nature['libelle']))
|
||||
for a_type in nature['activityTypeList']:
|
||||
print(' * %s: %s' % (a_type['code'], a_type['libelle']))
|
||||
#if '1' <= nature['code'] <= '9':
|
||||
# print(a_type['libelle'].split('-')[0].strip())
|
||||
|
||||
if '-' in a_type['code']:
|
||||
left, right = a_type['code'].split('-')
|
||||
lefts.add(left)
|
||||
rights.add(right)
|
||||
|
||||
print('left: ' + str(sorted(list(lefts))))
|
||||
print('right: ' + str(sorted(list(rights))))
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
args = parser.parse_args()
|
||||
check(args)
|
||||
|
||||
|
||||
# left: ['ADH', 'ARE', 'JOU', 'JOU2', 'PAR', 'SOR', 'STA']
|
||||
# De ce que je comprends, les types composés c'est que sur le loisir.
|
||||
# Donc critère type avec :
|
||||
# Adhesion, Activité Réguliére, Journée, 1/2 Journée, Parcours Santé, Sortie, Stage
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Family')
|
||||
|
||||
result = client.service.readFamily(
|
||||
dossierNumber=args.family,
|
||||
#schoolYear=
|
||||
#incomeYear=2020, # <-- pour avoir les quotients
|
||||
#referenceYear=2020,
|
||||
)
|
||||
if args.verbose > 1:
|
||||
print(result)
|
||||
return result
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('family', help='322423', nargs='?', default='322423')
|
||||
args = parser.parse_args()
|
||||
check(args)
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from zeep.helpers import serialize_object
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Ape')
|
||||
|
||||
results = client.service.readNurseryList(
|
||||
request={
|
||||
#'activityTypeCode': '', #'CRECHFAM', # 'CRECHCO'
|
||||
#'codePSU': '', #'REGULAR', # 'OCCASIONAL'
|
||||
}
|
||||
)
|
||||
|
||||
print(json.dumps(serialize_object(results), cls=utils.DjangoJSONEncoder, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, args.service.title())
|
||||
|
||||
ref = args.referential.title()
|
||||
if ref == 'Csp':
|
||||
ref = 'CSP'
|
||||
elif ref == 'Dietcode':
|
||||
ref = 'DietCode'
|
||||
elif ref == 'Pai':
|
||||
ref = 'PAI'
|
||||
elif ref == 'Childindicator':
|
||||
ref = 'ChildIndicator'
|
||||
elif ref == 'Rlindicator':
|
||||
ref = 'RLIndicator'
|
||||
elif ref == 'Activitynaturetype':
|
||||
ref = 'ActivityNatureType'
|
||||
elif ref == 'Yearschool':
|
||||
ref = 'YearSchool'
|
||||
elif ref == 'Derogreason':
|
||||
ref = 'DerogReason'
|
||||
elif ref == 'Activitynaturetype':
|
||||
ref = 'ActivityNatureType'
|
||||
|
||||
method = getattr(client.service, 'read%sList' % ref)
|
||||
results = method()
|
||||
print(results)
|
||||
assert len(results) > 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument('--service', '-m', default='Family', help='Family, Activity, Site, Invoice, Ape')
|
||||
parser.add_argument(
|
||||
'referential',
|
||||
help='category childIndicator civility country county csp dietcode organ pai quality quotient rlIndicator situation street town vaccin'
|
||||
+ 'activityNatureType derogReason level yearschool'
|
||||
+ 'regie'
|
||||
+ 'apeIndicator',
|
||||
nargs='?',
|
||||
default='civility'
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
check(args)
|
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def check(args):
|
||||
utils.configure_logging(args.verbose)
|
||||
client = utils.get_client(args.env, 'Site')
|
||||
|
||||
ref = args.referential.title()
|
||||
if ref == 'Yearschool':
|
||||
ref = 'YearSchool'
|
||||
elif ref == 'Derogreason':
|
||||
ref = 'DerogReason'
|
||||
elif ref == 'Activitynaturetype':
|
||||
ref = 'ActivityNatureType'
|
||||
|
||||
method = getattr(client.service, 'read%sList' % ref)
|
||||
results = method()
|
||||
print(results)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
|
||||
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
|
||||
parser.add_argument(
|
||||
'referential',
|
||||
help='activityNatureType derogReason level yearschool',
|
||||
nargs='?',
|
||||
default='yearschool'
|
||||
)
|
||||
check(parser.parse_args())
|
|
@ -0,0 +1,138 @@
|
|||
import datetime
|
||||
import time
|
||||
import json
|
||||
import logging.config
|
||||
import os
|
||||
import subprocess
|
||||
from lxml import etree
|
||||
import requests
|
||||
import zeep
|
||||
from zeep.helpers import serialize_object
|
||||
from zeep.transports import Transport
|
||||
from zeep.wsse.username import UsernameToken
|
||||
|
||||
|
||||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
|
||||
|
||||
class SoapFilter(logging.Filter):
|
||||
def filter(elf, record):
|
||||
# ignore get WSDL record
|
||||
if 'HTTP Post to' in record.message:
|
||||
return True
|
||||
elif 'HTTP Response from' in record.message:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
class SoapHandler(logging.Handler):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
for purpose in 'sent', 'received':
|
||||
try:
|
||||
os.remove('soap_' + purpose + '.xml')
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
def format(self, record):
|
||||
# cannot use formatter to do that
|
||||
start = record.message.find('<soap')
|
||||
soap = record.message[start:]
|
||||
return soap
|
||||
|
||||
def emit(self, record):
|
||||
msg = self.format(record)
|
||||
xml = etree.fromstring(msg)
|
||||
if 'HTTP Post to' in record.message:
|
||||
path = 'soap_sent.xml'
|
||||
elif 'HTTP Response from' in record.message:
|
||||
path = 'soap_received.xml'
|
||||
with open(path, 'ab') as soap_file:
|
||||
soap_file.write(('---8<---' + '-' *50 + '\n').encode())
|
||||
soap_file.write(etree.tostring(xml, pretty_print=True, encoding='UTF-8'))
|
||||
|
||||
|
||||
def configure_logging(verbose):
|
||||
if verbose > 1:
|
||||
level = 'DEBUG'
|
||||
else:
|
||||
level = 'INFO'
|
||||
logging.config.dictConfig({
|
||||
'version': 1,
|
||||
'filters': {
|
||||
'soap_filter': {
|
||||
'()': 'utils.SoapFilter',
|
||||
},
|
||||
},
|
||||
'formatters': {
|
||||
'verbose': {
|
||||
'format': '%(name)s: %(message)s'
|
||||
}
|
||||
},
|
||||
'handlers': {
|
||||
'console': {
|
||||
'level': level,
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'verbose',
|
||||
},
|
||||
'soap': {
|
||||
'level': level,
|
||||
'class': 'utils.SoapHandler',
|
||||
'filters': ['soap_filter'],
|
||||
# no formatter used
|
||||
},
|
||||
},
|
||||
'loggers': {
|
||||
'zeep.transports': {
|
||||
'level': 'DEBUG',
|
||||
'propagate': True,
|
||||
'handlers': ['console', 'soap'],
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
def get_wsdl_url(env, service):
|
||||
if env == 'dev':
|
||||
env_url = 'https://demo-toulouse.sigec.fr/maelisws-toulouse-recette/'
|
||||
elif env == 'test': # VPN required
|
||||
env_url = 'https://pfs.integration.toulouse-metropole.fr/parsifaltest/'
|
||||
elif env == 'integ': # VPN required
|
||||
env_url = 'https://pfs.integration.toulouse-metropole.fr/parsifal/'
|
||||
# elif env == 'prod':
|
||||
# env_url = 'https://pfs.applis.toulouse-metropole.fr/parsifal/'
|
||||
else:
|
||||
raise Exception('Mauvais environnement: %s', env)
|
||||
|
||||
return env_url + 'services/' + service.title() + 'Service?wsdl'
|
||||
|
||||
|
||||
def get_client(env, service):
|
||||
settings = zeep.Settings(strict=False, xsd_ignore_sequence_order=True)
|
||||
wsse = UsernameToken('maelis-webservice', 'maelis-password')
|
||||
session = requests.Session()
|
||||
session.verify = bool(env != 'dev')
|
||||
|
||||
wsdl_url = get_wsdl_url(env, service)
|
||||
print(wsdl_url)
|
||||
|
||||
|
||||
transport = Transport(session=session)
|
||||
client = zeep.Client(wsdl_url, transport=transport, wsse=wsse, settings=settings)
|
||||
return client
|
||||
|
||||
|
||||
class JSONEncoder(DjangoJSONEncoder):
|
||||
def default(self, o):
|
||||
if isinstance(o, time.struct_time):
|
||||
o = datetime.datetime(*tuple(o)[:6])
|
||||
return super().default(o)
|
||||
|
||||
|
||||
def diff_result(result, expected_file_path):
|
||||
with open('result.json', 'w') as json_file:
|
||||
json.dump(serialize_object(result), json_file, cls=DjangoJSONEncoder, indent=2)
|
||||
json_file.write('\n')
|
||||
cmd = 'diff %s result.json' % expected_file_path
|
||||
output = subprocess.run(cmd, shell=True, check=False, stdout=None, stderr=None)
|
||||
return output.returncode == 0
|
Loading…
Reference in New Issue