toulouse-maelis: stop triggering a removed wcs demand (#78967)

This commit is contained in:
Nicolas Roche 2023-06-23 14:32:04 +02:00 committed by Nicolas Roche
parent 56e2a4b1d9
commit 16fd6aae41
2 changed files with 22 additions and 1 deletions

View File

@ -4486,7 +4486,15 @@ class Subscription(models.Model):
try:
result = wcs_api.post_json(obj.wcs_trigger_payload, [], headers=headers)
except WcsApiError as e:
self.resource.logger.warning(e)
wcs_response = getattr(e.args[2], 'response', None)
if wcs_response is not None and wcs_response.status_code == 404:
# stop triggering a removed wcs demand
self.resource.logger.info(e)
obj.wcs_trigger_date = now()
obj.wcs_trigger_response = json.loads(e.args[2].response.text)
obj.save()
else:
self.resource.logger.warning(e)
return
obj.wcs_trigger_date = now()
obj.wcs_trigger_response = result

View File

@ -11370,3 +11370,16 @@ def test_trigger_wcs_api_error(family_service, activity_service, wcs_service, co
subscription = con.subscription_set.get(wcs_form_number='13-12')
assert subscription.trigger_status() == 'triggering'
assert subscription.wcs_trigger_response is None
# stop triggering a removed wcs demand
wcs_service.add(
responses.POST,
'https://wcs.example.com/api/forms/exemple-inscription-loisirs-1/12/hooks/update_subscription/',
json={'err': 1, 'err_class': 'Page non trouvée', 'err_desc': None},
status=404,
)
con.hourly()
assert len([x for x in wcs_service.calls if '/hooks/' in x.request.url]) == 4
subscription = con.subscription_set.get(wcs_form_number='13-12')
assert subscription.trigger_status() == 'triggered'
assert subscription.wcs_trigger_response == {'err': 1, 'err_class': 'Page non trouvée', 'err_desc': None}