From 86a0ae22ef4571f1f91927f2c8700553d82832ce Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Tue, 24 Jan 2023 17:01:18 +0100 Subject: [PATCH] franceconnect: return last known DGFiP data (#68720) --- passerelle/apps/franceconnect_data/fc.py | 10 ++++++++++ passerelle/apps/franceconnect_data/models.py | 2 ++ tests/test_franceconnect_data.py | 8 +++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/passerelle/apps/franceconnect_data/fc.py b/passerelle/apps/franceconnect_data/fc.py index b6958040..33394096 100644 --- a/passerelle/apps/franceconnect_data/fc.py +++ b/passerelle/apps/franceconnect_data/fc.py @@ -177,6 +177,16 @@ class FranceConnect: data[annrev] = dgfip_ressource_ir_response self.add('dgfip_ressource_ir_response', data) + def request_dgfip_last_known_ir(self): + ir = {} + for year, response in self.dgfip_ressource_ir_response.items(): + if response.get('error'): + continue + if ir.get('year', '0') < year: + ir = response + ir['year'] = year + self.add('dgfip_ressource_last_known_ir_response', ir) + def __getattr__(self, name): try: return dict(self.items)[name] diff --git a/passerelle/apps/franceconnect_data/models.py b/passerelle/apps/franceconnect_data/models.py index f728a59a..15599663 100644 --- a/passerelle/apps/franceconnect_data/models.py +++ b/passerelle/apps/franceconnect_data/models.py @@ -186,7 +186,9 @@ class Resource(BaseResource): current_year = now().year for year in range(current_year - 3, current_year): franceconnect.request_dgfip_ir(str(year), id_teleservice=self.dgfip_id_teleservice) + franceconnect.request_dgfip_last_known_ir() token['dgfip_ir'] = franceconnect.dgfip_ressource_ir_response + token['dgfip_ir']['last_known'] = franceconnect.dgfip_ressource_last_known_ir_response try: template = Template(self.text_template) text_template_context = { diff --git a/tests/test_franceconnect_data.py b/tests/test_franceconnect_data.py index 80ea0a41..85d0495f 100644 --- a/tests/test_franceconnect_data.py +++ b/tests/test_franceconnect_data.py @@ -59,7 +59,7 @@ DGFIP_MOCKED_RESPONSES = USER_INFO_MOCKED_RESPONSES + [ DGFIP_MOCKED_RESPONSES += [ [ '/impotparticulier/1.0/situations/ir/assiettes/annrev/%s' % year, - {'rfr': 0, 'revenuBrutGlobal': 0}, + {'rfr': year * 2, 'revenuBrutGlobal': year * 10}, ] for year in range(CURRENT_YEAR - 3, CURRENT_YEAR) ] @@ -165,3 +165,9 @@ def test_dgfip_mode(app, fc): assert data['dgfip_ir'] for year in range(CURRENT_YEAR - 3, CURRENT_YEAR): assert data['dgfip_ir'][str(year)] + assert 'last_known' in data['dgfip_ir'] + last_known_ir = data['dgfip_ir']['last_known'] + past_year = CURRENT_YEAR - 1 + assert last_known_ir['year'] == str(past_year) + assert last_known_ir['revenuBrutGlobal'] == past_year * 10 + assert last_known_ir['rfr'] == past_year * 2