toulouse_smart: skip add_media having no intervention (#60276)

This commit is contained in:
Nicolas Roche 2022-01-05 16:54:01 +01:00
parent 47f7cad1eb
commit f203135208
2 changed files with 35 additions and 1 deletions

View File

@ -321,7 +321,9 @@ class ToulouseSmartResource(BaseResource, HTTPResource):
def add_media_job(self, *args, **kwargs):
wcs_request_file = WcsRequestFile.objects.get(id=kwargs['id'])
wcs_request = wcs_request_file.resource
if not wcs_request.result or not wcs_request.result.get('id'):
if wcs_request.status == 'failed':
raise Exception('related wcs request failed')
if wcs_request.status == 'registered':
raise SkipJob(datetime.timedelta(minutes=10))
if not wcs_request_file.push():

View File

@ -910,6 +910,38 @@ def test_add_media_timeout_error(mocked_uuid, app, freezer, smart):
assert job.update_timestamp > job.creation_timestamp
@mock_response(
['/v1/type-intervention', None, INTERVENTION_TYPES],
['/v1/intervention/%s/media' % INTERVENTION_ID, ADD_MEDIA_QUERY, 200],
['/v1/intervention', CREATE_INTERVENTION_QUERY, '400 Client Error', 400],
)
@mock.patch("django.db.models.fields.UUIDField.get_default", return_value=UUID)
def test_add_media_with_create_intervention_failure(mocked_uuid, app, smart):
resp = app.post_json(URL + 'create-intervention/', params=CREATE_INTERVENTION_PAYLOAD)
assert not resp.json['err']
url = resp.json['data']['payload']['add_media_url']
url = URL + 'add-media?uuid=%s' % str(UUID)
resp = app.post_json(url, params=ADD_MEDIA_PAYLOAD)
assert not resp.json['err']
assert resp.json['data']['uuid'] == str(UUID)
assert resp.json['data']['nb_registered'] == 1
job = Job.objects.get(method_name='add_media_job')
assert job.status == 'registered'
# simulate failure on intervention creation
wcs_request = smart.wcs_requests.get(uuid=UUID)
wcs_request.status = 'failed'
wcs_request.save()
wcs_request_file = wcs_request.files.get(**job.parameters)
path = wcs_request_file.content.path
smart.jobs()
job = Job.objects.get(method_name='add_media_job')
assert job.status == 'failed'
assert 'related wcs request failed' in job.status_details['error_summary']
UPDATE_INTERVENTION_QUERY_ON_ASYNC_CREATION = {
'creation_response': {
'wcs_form_api_url': CREATE_INTERVENTION_PAYLOAD_EXTRA['form_api_url'],