Skip to content

Commit

Permalink
[Backport to 3.3.x][Fixes #9173] Upload Workflow: The finalize task s…
Browse files Browse the repository at this point in the history
…et "INVALID" state if the final step vew returns "error" without actually checking the real Import Session state (#9177)
  • Loading branch information
Alessio Fabiani committed Apr 19, 2022
1 parent 31efb6e commit 5a61bd4
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
6 changes: 1 addition & 5 deletions geonode/upload/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,11 +211,7 @@ def _update_upload_session_state(self, upload_session_id: int):
_content = _content.decode('UTF-8')
_response_json = json.loads(_content)
_success = _response_json.get('success', False)
_status = _response_json.get('status', 'error')
if _status == 'error':
# GeoNode Layer creation errored!
_upload.set_processing_state(Upload.STATE_INVALID)
elif _upload.state != Upload.STATE_PROCESSED:
if _upload.state != Upload.STATE_PROCESSED:
if _upload.layer and _upload.layer.processed:
# GeoNode Layer successfully processed...
_upload.set_processing_state(Upload.STATE_PROCESSED)
Expand Down
11 changes: 9 additions & 2 deletions geonode/upload/upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -716,12 +716,19 @@ def final_step(upload_session, user, charset="UTF-8", layer_id=None):
raise UploadException.from_exc(
_("The GeoServer Import Session is no more available"), e)
upload_session.import_session = import_session
upload_session = Upload.objects.update_from_session(upload_session)
upload_session = Upload.objects.update_from_session(upload_session, resource=saved_layer)

# _tasks_failed = any([_task.state in ["BAD_FORMAT", "ERROR", "CANCELED"] for _task in import_session.tasks])
_tasks_failed = any([_task.state in ["BAD_FORMAT", "ERROR", "CANCELED"] for _task in import_session.tasks])
_tasks_waiting = any([_task.state in ["NO_CRS", "NO_BOUNDS", "NO_FORMAT"] for _task in import_session.tasks])

if import_session.state != Upload.STATE_COMPLETE or _tasks_waiting:
if import_session.state == Upload.STATE_PENDING and _tasks_waiting:
if any([_task.state == "NO_CRS" for _task in import_session.tasks]):
_redirect_to = f"/upload/srs?id={import_session.id}"
_upload.set_resume_url(_redirect_to)
_upload.set_processing_state(Upload.STATE_WAITING)
elif _tasks_failed:
_upload.set_processing_state(Upload.STATE_INVALID)
return None

_log(f'Creating Django record for [{name}]')
Expand Down

0 comments on commit 5a61bd4

Please sign in to comment.