Projet

Général

Profil

0002-toulouse-maelis-correct-bool-input-on-WS-72523.patch

Nicolas Roche, 16 décembre 2022 07:51

Télécharger (6,83 ko)

Voir les différences:

Subject: [PATCH 2/4] toulouse-maelis: correct bool input on WS (#72523)

 passerelle/contrib/toulouse_maelis/models.py | 16 ++++++++++++++++
 tests/test_toulouse_maelis.py                |  3 +++
 2 files changed, 19 insertions(+)
passerelle/contrib/toulouse_maelis/models.py
366 366
            )
367 367
            item['isActive'] = self.encode_bool(item['isActive'])
368 368

  
369 369
    def assert_child_medical_record_payload_in_referential(self, post_data, parent_keys=None):
370 370
        keys = parent_keys or []
371 371
        data = post_data
372 372
        for key in keys:
373 373
            data = data[key]
374
        if 'isAuthHospital' in data:
375
            data['isAuthHospital'] = self.encode_bool(data['isAuthHospital'])
374 376

  
375 377
        for i in range(0, len(data.get('vaccinList', []))):
376 378
            self.assert_post_data_in_referential(
377 379
                'Vaccin', post_data, keys + ['vaccinList', i, 'code'], required=False
378 380
            )
379 381

  
380 382
    def assert_child_pai_payoad_in_referential(self, post_data, parent_keys=None):
381 383
        keys = parent_keys or []
......
391 393

  
392 394
    def assert_child_payload_in_referential(self, post_data, parent_keys=None):
393 395
        keys = parent_keys or []
394 396
        self.assert_post_data_in_referential('Sex', post_data, keys + ['sexe'])
395 397

  
396 398
        data = post_data
397 399
        for key in keys:
398 400
            data = data[key]
401
        for key in 'bPhoto', 'bLeaveAlone':
402
            if key in data:
403
                data[key] = self.encode_bool(data[key])
399 404

  
400 405
        if 'dietcode' in data:
401 406
            self.assert_post_data_in_referential('DietCode', post_data, keys + ['dietcode'], required=False)
402 407
        if 'paiInfoBean' in data:
403 408
            self.assert_child_pai_payoad_in_referential(post_data, keys + ['paiInfoBean'])
404 409
        if 'medicalRecord' in data:
405 410
            # dead code as updateFamily seems not to modify medicalRecord
406 411
            self.assert_child_medical_record_payload_in_referential(post_data, keys + ['medicalRecord'])
......
420 425
        self.assert_post_data_in_referential(
421 426
            'Complement', post_data, keys + ['adresse', 'numComp'], required=False
422 427
        )
423 428
        self.assert_post_data_in_referential(
424 429
            'CSP', post_data, keys + ['profession', 'codeCSP'], required=False
425 430
        )
426 431
        self.assert_post_data_in_referential('Organ', post_data, keys + ['CAFInfo', 'organ'], required=False)
427 432

  
433
        data = post_data
434
        for key in keys:
435
            data = data[key]
436
        if 'contact' in data:
437
            data = data['contact']
438
            for key in 'isContactMail', 'isContactSms', 'isInvoicePdf':
439
                if key in data:
440
                    data[key] = self.encode_bool(data[key])
441

  
428 442
    def assert_rl_payload_in_referential(self, post_data, parent_keys=None):
429 443
        keys = parent_keys or []
430 444
        self.assert_post_data_in_referential('Civility', post_data, keys + ['civility'])
431 445
        self.assert_post_data_in_referential('Quality', post_data, keys + ['quality'])
432 446
        self.assert_update_coordinate_payload_in_referential(post_data, keys)
433 447
        self.assert_update_indicator_payload_in_referential('RLIndicator', post_data, keys)
434 448

  
435 449
    def assert_create_rl1_payload_in_referential(self, post_data):
......
445 459
                self.assert_rl_payload_in_referential(post_data, [rlg])
446 460
        for i, person in enumerate(post_data.get('emergencyPersonList') or []):
447 461
            for j in range(0, len(person.get('personList') or [])):
448 462
                self.assert_person_payload_in_referential(
449 463
                    post_data, ['emergencyPersonList', i, 'personList', j]
450 464
                )
451 465
        for i in range(0, len(post_data.get('childList') or [])):
452 466
            self.assert_child_payload_in_referential(post_data, ['childList', i])
467
        if 'flagCom' in post_data:
468
            post_data['flagCom'] = self.encode_bool(post_data['flagCom'])
453 469

  
454 470
    def replace_null_values(self, dico):
455 471
        '''send null fields as empty SOAP tag to tell maelis to empty the value'''
456 472
        for key, value in dico.items():
457 473
            if isinstance(value, dict):
458 474
                self.replace_null_values(value)
459 475
            if value is None:
460 476
                dico[key] = ''
tests/test_toulouse_maelis.py
1257 1257

  
1258 1258
    family_service.add_soap_response(
1259 1259
        'createFamily', get_xml_file('R_create_family.xml'), request_check=request_check
1260 1260
    )
1261 1261
    url = get_endpoint('create-family')
1262 1262
    params = {
1263 1263
        'category': 'ACCEUI',
1264 1264
        'situation': 'C',
1265
        'flagCom': False,
1265 1266
        'rl1/civility': 'M.',
1266 1267
        'rl1/firstname': 'Jhon',
1267 1268
        'rl1/lastname': 'Doe',
1268 1269
        'rl1/quality': 'AU',
1269 1270
        'rl1/birth/communeCode': None,
1270 1271
        'rl1/birth/countryCode': '99350',
1271 1272
        'rl1/birth/dateBirth': '1938-07-26',
1272 1273
        'rl1/birth/place': 'Rabbat',
1273 1274
        'rl1/adresse/idStreet': 'AM0330',
1274 1275
        'rl1/adresse/street1': 'Chateau',
1275 1276
        'rl1/adresse/town': 'Paris',
1276 1277
        'rl1/adresse/zipcode': '75014',
1277 1278
        'rl1/adresse/numComp': 'B',
1279
        'rl1/contact/isContactMail': True,
1278 1280
        'rl1/profession/codeCSP': 'ART',
1279 1281
        'rl1/CAFInfo/organ': 'A10007752822',
1280 1282
        'emergencyPersonList/0/civility': 'MME',
1281 1283
        'emergencyPersonList/0/firstname': 'Keny',
1282 1284
        'emergencyPersonList/0/lastname': 'Arkana',
1283 1285
        'emergencyPersonList/0/sexe': 'F',
1284 1286
        'emergencyPersonList/0/dateBirth': '1982-12-20',
1285 1287
        'emergencyPersonList/0/quality': 'T',
......
2151 2153
    params = {
2152 2154
        'adresse/num': '169',
2153 2155
        'adresse/numComp': 'B',
2154 2156
        'adresse/idStreet': 'AM0330',
2155 2157
        'adresse/street1': 'Château',
2156 2158
        'adresse/street2': None,
2157 2159
        'adresse/town': 'Paris',
2158 2160
        'adresse/zipcode': '75014',
2161
        'contact/isContactMail': True,
2159 2162
        'profession/codeCSP': 'ART',
2160 2163
        'profession/profession': 'informaticien',
2161 2164
        'profession/employerName': 'EO',
2162 2165
        'profession/phone': '0123456789',
2163 2166
        'profession/addressPro': {'num': None, 'street': None, 'zipcode': None, 'town': 'Orléans'},
2164 2167
        'CAFInfo/number': '789',
2165 2168
        'CAFInfo/organ': 'A10007752822',
2166 2169
    }
2167
-