toulouse-maelis: add DUI to already linked error (#86594) #460

Merged
nroche merged 1 commits from wip/86594-parsifal-add-dui-to-already-linked-err into main 2024-02-09 10:46:50 +01:00
2 changed files with 34 additions and 4 deletions

View File

@ -1704,7 +1704,10 @@ class ToulouseMaelis(BaseResource, HTTPResource):
)
def create_family(self, request, post_data, NameID=None):
if self.link_set.filter(name_id=NameID).exists():
raise APIError('User already linked to family')
raise APIError(

Si c'est un message à afficher en IHM ça vaudrait la peine qu'il soit traduit + mettre la traduction dans la PR, tu pourrais aussi mettre le DUI tout seul dans un paramètre de l'APIError via extra_dict.

Si c'est un message à afficher en IHM ça vaudrait la peine qu'il soit traduit + mettre la traduction dans la PR, tu pourrais aussi mettre le DUI tout seul dans un paramètre de l'APIError via extra_dict.

Cette précision c'est dans le but d'autonomiser les agents,
par exemple sur le ticket #3895 : que le message trouvé dans l'inspecteur sur form_workflow_data_creation_rl1_error_response_err_desc
leur soit plus parlant (ou pour moi qui me retrouve à vouloir le préciser dans les tickets).

Ce n'est donc pas à destination d'une IHM.
Et je ne pense pas que les agents iront fouiller au delà, dans d'autres variables ...response_extra_dict...

Après, j'ai fait en sorte que l'on n'ait aucune traduction sur ce connecteur (contrib) pour me faciliter les développements.
Dans ce connecteur tous les textes sont en français, sauf cependant les APIError qui sont toutes en anglais.
Je changerais tout ça si tu penses que c'est souhaitable, mais alors je passerais par un autre ticket pour garder un semblant de cohérence.

Cette précision c'est dans le but d'autonomiser les agents, par exemple sur le ticket #3895 : que le message trouvé dans l'inspecteur sur `form_workflow_data_creation_rl1_error_response_err_desc` leur soit plus parlant (ou pour moi qui me retrouve à vouloir le préciser dans les tickets). Ce n'est donc pas à destination d'une IHM. Et je ne pense pas que les agents iront fouiller au delà, dans d'autres variables ...response_extra_dict... Après, j'ai fait en sorte que l'on n'ait aucune traduction sur ce connecteur (contrib) pour me faciliter les développements. Dans ce connecteur tous les textes sont en français, sauf cependant les APIError qui sont toutes en anglais. Je changerais tout ça si tu penses que c'est souhaitable, mais alors je passerais par un autre ticket pour garder un semblant de cohérence.

Cela dit, dis-moi et je fais, et on peut même rejeter ce ticket qui n'a pas réellement d'importance.

Cela dit, dis-moi et je fais, et on peut même rejeter ce ticket qui n'a pas réellement d'importance.

On peut demander à des agents d'aller regarder dans l'inspecteur, j'espère bien qu'ils n'y ont pas accès. Je demande juste d'utiliser gettext ici.

Ou bien de ne pas mettre le DUI dans le message mais une clé sur le coté, comme ça pas de traduction nécessaire mais dans le workflow il faut tester err_desc puis afficher un message customisé en parant de ..._response_dui je me réfère aux intentions de Cédric dans http://redmine.sigec.fr/issues/3895#note-5 si tu mets le DUI dans le message et en anglais il ne pourra pas faire grand chose à part l'afficher tel quel.

On peut demander à des agents d'aller regarder dans l'inspecteur, j'espère bien qu'ils n'y ont pas accès. Je demande juste d'utiliser gettext ici. Ou bien de ne pas mettre le DUI dans le message mais une clé sur le coté, comme ça pas de traduction nécessaire mais dans le workflow il faut tester err_desc puis afficher un message customisé en parant de ..._response_dui je me réfère aux intentions de Cédric dans http://redmine.sigec.fr/issues/3895#note-5 si tu mets le DUI dans le message et en anglais il ne pourra pas faire grand chose à part l'afficher tel quel.

Dans ce connecteur tous les textes sont en français, sauf cependant les APIError qui sont toutes en anglais.

Ben alors pour être cohérent met l'APIError en français ici, mais pas partout vu que ça pourrait péter des worklows qui testent err_desc (je ne connais pas les pratique de Stéphane et Cédric à ce sujet).

> Dans ce connecteur tous les textes sont en français, sauf cependant les APIError qui sont toutes en anglais. Ben alors pour être cohérent met l'APIError en français ici, mais pas partout vu que ça pourrait péter des worklows qui testent err_desc (je ne connais pas les pratique de Stéphane et Cédric à ce sujet).
'User already linked to family',
extra_dict={'link': self.link_set.filter(name_id=NameID).values()[0]},
)
self.check_and_adapt_family_payload_in_referential(post_data)
response = self.call('Family', 'createFamily', **post_data)
@ -1753,7 +1756,10 @@ class ToulouseMaelis(BaseResource, HTTPResource):
)
def create_rl1(self, request, post_data, NameID=None):
if self.link_set.filter(name_id=NameID).exists():
raise APIError('User already linked to family')
raise APIError(
'User already linked to family',
extra_dict={'link': self.link_set.filter(name_id=NameID).values()[0]},
)
self.check_and_adapt_create_rl1_payload_in_referential(post_data)
response = self.call('Family', 'createFamily', **post_data)

View File

@ -2704,7 +2704,7 @@ def test_create_family_empty_referential_key_error(con, app):
assert resp.json['err_desc'] == "category: '' does not match '.+'"
def test_create_family_already_linked_error(con, app):
def test_create_family_already_linked_error(con, app, freezer):
url = get_endpoint('create-family')
params = {
'category': 'ACCEUI',
@ -2719,10 +2719,22 @@ def test_create_family_already_linked_error(con, app):
'rl1/adresse/zipcode': '75014',
}
freezer.move_to('2024-02-07 10:21:00')
Link.objects.create(resource=con, family_id='1312', name_id='local')
resp = app.post_json(url + '?NameID=local', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User already linked to family'
link = resp.json['link']
link['id'] = 'xx'
link['resource_id'] = 'yy'
assert link == {
Review

Nickel.

Nickel.
'id': 'xx',
'resource_id': 'yy',
'name_id': 'local',
'family_id': '1312',
'created': '2024-02-07T10:21:00Z',
'updated': '2024-02-07T10:21:00Z',
}
def test_create_family_maelis_error(family_service, con, app):
@ -3051,7 +3063,7 @@ def test_create_rl1_empty_referential_key_error(con, app):
assert resp.json['err_desc'] == "rl1/civility: '' does not match '.+'"
def test_create_rl1_already_linked_error(con, app):
def test_create_rl1_already_linked_error(con, app, freezer):
url = get_endpoint('create-rl1')
params = {
'category': 'ACCEUI',
@ -3066,10 +3078,22 @@ def test_create_rl1_already_linked_error(con, app):
'rl1/adresse/zipcode': '75014',
}
freezer.move_to('2024-02-07 10:21:00')
Link.objects.create(resource=con, family_id='1312', name_id='local')
resp = app.post_json(url + '?NameID=local', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User already linked to family'
link = resp.json['link']
link['id'] = 'xx'
link['resource_id'] = 'yy'
assert link == {
'id': 'xx',
'resource_id': 'yy',
'name_id': 'local',
'family_id': '1312',
'created': '2024-02-07T10:21:00Z',
'updated': '2024-02-07T10:21:00Z',
}
def test_create_rl1_wrong_referential_key_error(con, app):