franceconnect: return last known DGFiP data (#68720)

This commit is contained in:
Serghei Mihai 2023-01-24 17:01:18 +01:00 committed by Gitea
parent d6faf7cca7
commit 86a0ae22ef
3 changed files with 19 additions and 1 deletions

View File

@ -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]

View File

@ -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 = {

View File

@ -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