Skip to content

Commit d37787f

Browse files
committed
records: remove previous version exception
1 parent 59463b5 commit d37787f

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

backend/inspirehep/records/api/base.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from invenio_records.models import RecordMetadata
2323
from sqlalchemy import tuple_
2424
from sqlalchemy.orm.attributes import flag_modified
25+
from sqlalchemy.orm.exc import NoResultFound
2526

2627
from inspirehep.indexer.base import InspireRecordIndexer
2728
from inspirehep.pidstore.api import PidStoreBase
@@ -395,11 +396,20 @@ def index(self, force_delete=None, delay=True):
395396
@property
396397
def _previous_version(self):
397398
"""Returns the previous version of the record"""
398-
current = self.model.versions.filter_by(version_id=self.model.version_id).one()
399-
if current.previous:
400-
data = current.previous.json
401-
else:
402-
data = {}
399+
data = {}
400+
try:
401+
current = self.model.versions.filter_by(
402+
version_id=self.model.version_id
403+
).one()
404+
if current.previous:
405+
data = current.previous.json
406+
except NoResultFound:
407+
LOGGER.warning(
408+
"Record previous version is not found",
409+
version_id=self.model.version_id,
410+
uuid=self.id,
411+
)
412+
403413
return type(self)(data=data)
404414

405415
@property

backend/tests/integration-async/records/api/test_base.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,23 @@ def test_record_versioning(app, clear_environment):
4141
assert record._previous_version
4242

4343

44+
def test_record_previous_version_doesnt_fail_if_previous_version_missing(
45+
app, clear_environment
46+
):
47+
data = {
48+
"$schema": "http://localhost:5000/schemas/records/hep.json",
49+
"titles": [{"title": "Test a valid record"}],
50+
"document_type": ["article"],
51+
"_collections": ["Literature"],
52+
}
53+
54+
expected_version_created = 1
55+
expected_count_created = 1
56+
record = LiteratureRecord.create(data)
57+
record_control_number = record["control_number"]
58+
assert LiteratureRecord({}) == record._previous_version
59+
60+
4461
def test_get_modified_references_returns_all_references_when_earliest_date_changed(
4562
app, clear_environment
4663
):

0 commit comments

Comments
 (0)