From f336d7a952217afb9a7f82b19d476f7e06d765a6 Mon Sep 17 00:00:00 2001 From: Emmanuel Cazenave Date: Mon, 30 Oct 2023 17:07:41 +0100 Subject: [PATCH] atal_rest: add worksrequest-intervention-status endpoint (#82948) --- passerelle/apps/atal_rest/models.py | 23 +++++++++++++++++++++++ tests/test_atal_rest.py | 22 ++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/passerelle/apps/atal_rest/models.py b/passerelle/apps/atal_rest/models.py index 08b96651..adf45d9b 100644 --- a/passerelle/apps/atal_rest/models.py +++ b/passerelle/apps/atal_rest/models.py @@ -152,6 +152,14 @@ STATUS_MAP = { } +INTERVENTION_STATUS_MAP = { + 1: 'Pas commencé', + 2: 'En cours', + 4: 'Terminé', + 5: 'Fermé', +} + + def to_ds(record): record['id'] = record['Id'] record['text'] = record['Name'] @@ -471,3 +479,18 @@ class AtalREST(BaseResource, HTTPResource): resp_data = self._call('api/WorksRequests/%s' % worksrequests_id) resp_data['RequestStateLabel'] = STATUS_MAP.get(resp_data.get('RequestState', ''), '') return {'data': resp_data} + + @endpoint( + methods=['get'], + name='worksrequest-intervention-status', + description=_('Get the status of a works request intervention'), + parameters={ + 'number': { + 'example_value': 'DIT23070011', + } + }, + ) + def worksrequest_intervention_status(self, request, number): + resp_data = self._call('/api/WorksRequests/GetInterventionStates', params={'number': number})[0] + resp_data['WorkStateLabel'] = INTERVENTION_STATUS_MAP.get(resp_data.get('WorkState', ''), '') + return {'data': resp_data} diff --git a/tests/test_atal_rest.py b/tests/test_atal_rest.py index a0212f22..0faf456b 100644 --- a/tests/test_atal_rest.py +++ b/tests/test_atal_rest.py @@ -71,6 +71,28 @@ def test_worksrequest_status(app, connector): assert json_resp['data']['RequestStateLabel'] == 'En attente' +def test_worksrequest_intervention_status(app, connector): + with responses.RequestsMock() as rsps: + rsps.get( + 'https://atal.invalid/api/WorksRequests/GetInterventionStates', + status=200, + json=[ + { + 'RequestId': 'cc8b7f6b-8ccf-4938-a648-09678feda679', + 'InterventionState': 2, + 'WorkState': 2, + 'InterventionNumber': 'IN23090003', + } + ], + ) + resp = app.get('/atal-rest/test/worksrequest-intervention-status?number=DIT23070011') + json_resp = resp.json + assert json_resp['err'] == 0 + assert json_resp['data']['InterventionState'] == 2 + assert json_resp['data']['WorkState'] == 2 + assert json_resp['data']['WorkStateLabel'] == 'En cours' + + def test_worksrequests_single_attachment(app, connector): with responses.RequestsMock() as rsps: rsps.post('https://atal.invalid/api/WorksRequests/1/Attachments', status=200, body=b'')