toulouse-maelis: return a quotients dict on RL (#77257)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Nicolas Roche 2023-05-05 17:30:27 +02:00 committed by Nicolas Roche
parent 135cdbf46a
commit 86ac566bbb
6 changed files with 181 additions and 20 deletions

View File

@ -348,6 +348,7 @@ def remove_id_on_rlg(conn, rlg):
rlg['indicatorList'].sort(key=lambda x: x['code'])
rlg['quotientList'].sort(key=lambda x: (x['yearRev'], x['dateStart']))
del rlg['indicators'] # order may change
del rlg['quotients'] # order may change
rlg['subscribeActivityList'] = [] # not managed by test yet
del rlg['subscribe_natures'] # order may change

View File

@ -414,6 +414,18 @@ class ToulouseMaelis(BaseResource, HTTPResource):
result[item['id']] = item
data['indicators'] = result
def add_quotients_field(self, data):
quotients = {}
for item in data['quotientList']:
key = item['cdquo']
if key not in quotients:
quotients[key] = []
quotients[key].append(item)
data['quotients'] = {
x: sorted(y, key=lambda z: (z['yearRev'], z['dateStart'], z['dateEnd']), reverse=True)
for x, y in quotients.items()
}
def add_nature_subscriptions(self, data):
subscribe_natures = {}
for item in data['subscribeActivityList'] or []:
@ -483,6 +495,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
for quotient in data['quotientList']:
self.add_text_value('Quotient', quotient, ['cdquo'])
self.add_indicators_field('RLIndicator', data)
self.add_quotients_field(data)
self.add_nature_subscriptions(data)
self.add_text_value_to_birth(data)

View File

@ -54,6 +54,27 @@
<mtt>1500.33</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-01T00:00:00+01:00</dateStart>
<dateEnd>2021-01-01T00:00:00+01:00</dateEnd>
<mtt>300</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-01T00:00:00+01:00</dateStart>
<dateEnd>2021-01-02T00:00:00+01:00</dateEnd>
<mtt>200</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-02T00:00:00+01:00</dateStart>
<dateEnd>2021-01-02T00:00:00+01:00</dateEnd>
<mtt>100</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2022-01-01T00:00:00+01:00</dateStart>

View File

@ -54,6 +54,27 @@
<mtt>1500.33</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-01T00:00:00+01:00</dateStart>
<dateEnd>2021-01-01T00:00:00+01:00</dateEnd>
<mtt>300</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-01T00:00:00+01:00</dateStart>
<dateEnd>2021-01-02T00:00:00+01:00</dateEnd>
<mtt>200</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-02T00:00:00+01:00</dateStart>
<dateEnd>2021-01-02T00:00:00+01:00</dateEnd>
<mtt>100</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2022-01-01T00:00:00+01:00</dateStart>

View File

@ -54,6 +54,27 @@
<mtt>1500.33</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-01T00:00:00+01:00</dateStart>
<dateEnd>2021-01-01T00:00:00+01:00</dateEnd>
<mtt>300</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-01T00:00:00+01:00</dateStart>
<dateEnd>2021-01-02T00:00:00+01:00</dateEnd>
<mtt>200</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2021-01-02T00:00:00+01:00</dateStart>
<dateEnd>2021-01-02T00:00:00+01:00</dateEnd>
<mtt>100</mtt>
<cdquo>QS</cdquo>
</quotientList>
<quotientList>
<yearRev>2021</yearRev>
<dateStart>2022-01-01T00:00:00+01:00</dateStart>

View File

@ -1386,6 +1386,8 @@ def test_read_family(family_service, xml, con, app):
del data['profession']
del data['indicatorList']
del data['indicators']
del data['quotientList']
del data['quotients']
assert data == {
'num': '613878',
'lastname': 'DOE',
@ -1424,26 +1426,6 @@ def test_read_family(family_service, xml, con, app):
'CAFInfo': None,
'civility_text': 'Monsieur',
'quality_text': 'PERE',
'quotientList': [
{
'cdquo': 'QS',
'cdquo_text': 'QUOTIENT SCOLAIRE',
'codeUti': None,
'dateEnd': '2021-12-31T00:00:00+01:00',
'dateStart': '2021-01-01T00:00:00+01:00',
'mtt': 1500.33,
'yearRev': 2020,
},
{
'cdquo': 'MOY ECO',
'cdquo_text': 'REVENU MOYEN ( MENSUEL OU ANNUEL)',
'codeUti': None,
'dateEnd': '2022-12-31T00:00:00+01:00',
'dateStart': '2022-01-01T00:00:00+01:00',
'mtt': 1500.44,
'yearRev': 2021,
},
],
'subscribeActivityList': [],
'subscribe_natures': {},
}
@ -1498,6 +1480,104 @@ def test_read_family(family_service, xml, con, app):
'typeDesc': 'NONE',
},
}
assert resp.json['data']['RL1']['quotientList'] == [
{
'yearRev': 2020,
'dateStart': '2021-01-01T00:00:00+01:00',
'dateEnd': '2021-12-31T00:00:00+01:00',
'mtt': 1500.33,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
{
'yearRev': 2021,
'dateStart': '2021-01-01T00:00:00+01:00',
'dateEnd': '2021-01-01T00:00:00+01:00',
'mtt': 300.0,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
{
'yearRev': 2021,
'dateStart': '2021-01-01T00:00:00+01:00',
'dateEnd': '2021-01-02T00:00:00+01:00',
'mtt': 200.0,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
{
'yearRev': 2021,
'dateStart': '2021-01-02T00:00:00+01:00',
'dateEnd': '2021-01-02T00:00:00+01:00',
'mtt': 100.0,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
{
'yearRev': 2021,
'dateStart': '2022-01-01T00:00:00+01:00',
'dateEnd': '2022-12-31T00:00:00+01:00',
'mtt': 1500.44,
'cdquo': 'MOY ECO',
'codeUti': None,
'cdquo_text': 'REVENU MOYEN ( MENSUEL OU ANNUEL)',
},
]
assert resp.json['data']['RL1']['quotients'] == {
'QS': [
{
'yearRev': 2021,
'dateStart': '2021-01-02T00:00:00+01:00',
'dateEnd': '2021-01-02T00:00:00+01:00',
'mtt': 100.0,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
{
'yearRev': 2021,
'dateStart': '2021-01-01T00:00:00+01:00',
'dateEnd': '2021-01-02T00:00:00+01:00',
'mtt': 200.0,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
{
'yearRev': 2021,
'dateStart': '2021-01-01T00:00:00+01:00',
'dateEnd': '2021-01-01T00:00:00+01:00',
'mtt': 300.0,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
{
'yearRev': 2020,
'dateStart': '2021-01-01T00:00:00+01:00',
'dateEnd': '2021-12-31T00:00:00+01:00',
'mtt': 1500.33,
'cdquo': 'QS',
'codeUti': None,
'cdquo_text': 'QUOTIENT SCOLAIRE',
},
],
'MOY ECO': [
{
'yearRev': 2021,
'dateStart': '2022-01-01T00:00:00+01:00',
'dateEnd': '2022-12-31T00:00:00+01:00',
'mtt': 1500.44,
'cdquo': 'MOY ECO',
'codeUti': None,
'cdquo_text': 'REVENU MOYEN ( MENSUEL OU ANNUEL)',
}
],
}
data = resp.json['data']['childList'][0]
del data['medicalRecord']
del data['authorizedPersonList']
@ -1723,6 +1803,9 @@ def test_read_rl1(family_service, con, app):
assert resp.json['err'] == 0
assert resp.json['data']['firstname'] == 'JHON'
template = '{{ data.quotients.QS.0.mtt }} {{ data.quotients.QS.1.mtt }}'
assert render_to_string(template, resp.json) == '100.0 200.0'
def test_read_rl1_with_income_year(family_service, con, app):
family_service.add_soap_response('readFamily', get_xml_file('R_read_family_with_income_year.xml'))
@ -1811,6 +1894,7 @@ def test_read_rl2(family_service, con, app):
'civility_text': 'Madame',
'quality_text': 'MERE',
'quotientList': [],
'quotients': {},
'indicatorList': [],
'indicators': {
'AVL': {