planitec: add getreservationsinfo endpoint (#31625)

This commit is contained in:
Emmanuel Cazenave 2019-03-21 17:25:27 +01:00
parent 1660716b26
commit 561b159936
2 changed files with 48 additions and 0 deletions

View File

@ -674,6 +674,23 @@ class PlanitechConnector(BaseResource):
self._get_places_referential(), kwargs)
}
@endpoint(description_get=_('Get reservation infos'), methods=['get'], perm='can_access')
def getreservationsinfo(self, request, reservation_id):
params = {'reservationIdentifiers': [float(reservation_id)]}
data = self._call_planitech(self.requests.post, 'getReservationsInfo', params)
data = data.get('requestedReservations', [])
res = {}
# Delete circular references that are not json serializable
if data:
res = data[0]
if 'activity' in res and 'reservations' in res['activity']:
del res['activity']['reservations']
if 'contractor' in res and 'reservations' in res['contractor']:
del res['contractor']['reservations']
return {'data': res}
@endpoint(description_get=_('Get reservation types'), methods=['get'], perm='can_access')
def getreservationtypes(self, request):
return {'data': self.generic_call('getReservationTypes', 'types')}

View File

@ -429,6 +429,37 @@ def test_update_reservation(app, connector, monkeypatch):
assert json_resp['err_desc'] == "'reservation_id' is a required property"
def test_get_reservations_infos(app, connector, monkeypatch):
mock_call_planitech = mock_planitech(
monkeypatch,
return_value={
'requestedReservations': [
{
'reservation': 'data',
'activity': {
'reservations': 'activity_data'
},
'contractor': {
'reservations': 'contractor_data'
}
}
]
}
)
response = app.get('/planitech/slug-planitech/getreservationsinfo/?reservation_id=1')
json_resp = response.json
assert json_resp['err'] == 0
assert json_resp['data'] == {
'reservation': 'data',
'activity': {},
'contractor': {},
}
assert mock_call_planitech.call_args[0][1] == 'getReservationsInfo'
assert mock_call_planitech.call_args[0][2] == {
'reservationIdentifiers': [1.0]
}
def freegaps_data():
referential = {
2.0: {