atal_rest: add worksrequest-intervention-status endpoint (#82948)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Emmanuel Cazenave 2023-10-30 17:07:41 +01:00
parent c148f6ae03
commit f336d7a952
2 changed files with 45 additions and 0 deletions

View File

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

View File

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