fix: Avoid validation crash when title parsing fails (#7131)
* fix: Add guards after failed submission validation * fix: Avoid nulling submission.title
This commit is contained in:
parent
93fca0036a
commit
3afd6ca42f
|
@ -1280,11 +1280,11 @@ def process_and_validate_submission(submission):
|
||||||
if xml_metadata is not None:
|
if xml_metadata is not None:
|
||||||
# Items preferred / only available from XML
|
# Items preferred / only available from XML
|
||||||
submission.xml_version = xml_metadata["xml_version"]
|
submission.xml_version = xml_metadata["xml_version"]
|
||||||
submission.title = xml_metadata["title"]
|
submission.title = xml_metadata["title"] or ""
|
||||||
submission.authors = xml_metadata["authors"]
|
submission.authors = xml_metadata["authors"]
|
||||||
else:
|
else:
|
||||||
# Items to get from text only if XML not available
|
# Items to get from text only if XML not available
|
||||||
submission.title = text_metadata["title"]
|
submission.title = text_metadata["title"] or ""
|
||||||
submission.authors = text_metadata["authors"]
|
submission.authors = text_metadata["authors"]
|
||||||
|
|
||||||
if not submission.title:
|
if not submission.title:
|
||||||
|
@ -1371,6 +1371,7 @@ def process_and_accept_uploaded_submission(submission):
|
||||||
try:
|
try:
|
||||||
process_and_validate_submission(submission)
|
process_and_validate_submission(submission)
|
||||||
except SubmissionError as err:
|
except SubmissionError as err:
|
||||||
|
submission.refresh_from_db() # guard against incomplete changes in submission validation / processing
|
||||||
cancel_submission(submission) # changes Submission.state
|
cancel_submission(submission) # changes Submission.state
|
||||||
create_submission_event(None, submission, f"Submission rejected: {err}")
|
create_submission_event(None, submission, f"Submission rejected: {err}")
|
||||||
return
|
return
|
||||||
|
@ -1410,11 +1411,13 @@ def process_uploaded_submission(submission):
|
||||||
try:
|
try:
|
||||||
process_and_validate_submission(submission)
|
process_and_validate_submission(submission)
|
||||||
except InconsistentRevisionError as consistency_error:
|
except InconsistentRevisionError as consistency_error:
|
||||||
|
submission.refresh_from_db() # guard against incomplete changes in submission validation / processing
|
||||||
submission.state_id = "manual"
|
submission.state_id = "manual"
|
||||||
submission.save()
|
submission.save()
|
||||||
create_submission_event(None, submission, desc="Uploaded submission (diverted to manual process)")
|
create_submission_event(None, submission, desc="Uploaded submission (diverted to manual process)")
|
||||||
send_manual_post_request(None, submission, errors=dict(consistency=str(consistency_error)))
|
send_manual_post_request(None, submission, errors=dict(consistency=str(consistency_error)))
|
||||||
except SubmissionError as err:
|
except SubmissionError as err:
|
||||||
|
submission.refresh_from_db() # guard against incomplete changes in submission validation / processing
|
||||||
cancel_submission(submission) # changes Submission.state
|
cancel_submission(submission) # changes Submission.state
|
||||||
create_submission_event(None, submission, f"Submission rejected: {err}")
|
create_submission_event(None, submission, f"Submission rejected: {err}")
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue