Skip to content
Snippets Groups Projects
Commit e3fec8f6 authored by Daniel Hornung's avatar Daniel Hornung
Browse files

Merge branch 'f-remove-foo' into 'dev'

MAINT: remove `retrieve_identified_record_for_record` and `resolve_reference`

See merge request !170
parents c22521e4 abcc2dfe
No related branches found
No related tags found
2 merge requests!178FIX: #96 Better error output for crawl.py script.,!170MAINT: remove `retrieve_identified_record_for_record` and `resolve_reference`
Pipeline #52170 passed with warnings
......@@ -264,10 +264,6 @@ class IdentifiableAdapter(metaclass=ABCMeta):
"""
pass
@abstractmethod
def resolve_reference(self, record: db.Record):
pass
@abstractmethod
def get_file(self, identifiable: db.File):
warnings.warn(
......@@ -409,28 +405,6 @@ class IdentifiableAdapter(metaclass=ABCMeta):
"""
pass
def retrieve_identified_record_for_record(
self, record: db.Record, referencing_entities=None
):
"""
This function combines all functionality of the IdentifierAdapter by
returning the identifiable after having checked for an appropriate
registered identifiable.
In case there was no appropriate registered identifiable or no identifiable could
be found return value is None.
"""
if record.path is not None:
return cached_get_entity_by(path=record.path)
if record.id is not None:
return cached_get_entity_by(eid=record.id)
identifiable = self.get_identifiable(
record, referencing_entities=referencing_entities
)
return self.retrieve_identified_record_for_identifiable(identifiable)
@staticmethod
def referencing_entity_has_appropriate_type(parents, register_identifiable):
"""returns true if one of the parents is listed by the 'is_referenced_by' property
......@@ -585,26 +559,6 @@ class LocalStorageIdentifiableAdapter(IdentifiableAdapter):
return None
return candidates[0]
def resolve_reference(self, value: db.Record):
if self.get_registered_identifiable(value) is None:
raise NotImplementedError(
"Non-identifiable references cannot"
" be used as properties in identifiables."
)
# TODO: just resolve the entity
value_identifiable = self.retrieve_identified_record_for_record(value)
if value_identifiable is None:
raise RuntimeError(
"The identifiable which is used as property"
" here has to be inserted first."
)
if value_identifiable.id is None:
raise RuntimeError("The entity has not been assigned an ID.")
return value_identifiable.id
class CaosDBIdentifiableAdapter(IdentifiableAdapter):
"""
......@@ -669,15 +623,6 @@ class CaosDBIdentifiableAdapter(IdentifiableAdapter):
if definition.parents[0].name.lower() == rt_name.lower():
return definition
def resolve_reference(self, record: db.Record):
"""
Current implementation just sets the id for this record
as a value. It needs to be verified that references all contain an ID.
"""
if record.id is None:
return record
return record.id
def retrieve_identified_record_for_identifiable(self, identifiable: Identifiable):
query_string = self.create_query_for_identifiable(identifiable)
try:
......
......@@ -191,8 +191,6 @@ def crawler_mocked_identifiable_retrieve():
# Simulate remote server content by using the names to identify records
# There is only a single known Record with name A
crawler.identifiableAdapter.retrieve_identified_record_for_record = Mock(side_effect=partial(
basic_retrieve_by_name_mock_up, known={"A": db.Record(id=1111, name="A")}))
crawler.identifiableAdapter.retrieve_identified_record_for_identifiable = Mock(
side_effect=partial(
basic_retrieve_by_name_mock_up, known={"A": db.Record(id=1111, name="A")}))
......@@ -217,9 +215,6 @@ def crawler_mocked_for_backref_test():
# Simulate remote server content by using the names to identify records
# There is only a single known Record with name A
crawler.identifiableAdapter.retrieve_identified_record_for_record = Mock(side_effect=partial(
basic_retrieve_by_name_mock_up, known={"A":
db.Record(id=1111, name="A").add_parent("BR")}))
crawler.identifiableAdapter.retrieve_identified_record_for_identifiable = Mock(
side_effect=partial(
basic_retrieve_by_name_mock_up, known={"A":
......@@ -342,10 +337,6 @@ def test_split_into_inserts_and_updates_simple(crawler_mocked_identifiable_retri
st = SyncGraph(entlist, crawler.identifiableAdapter)
# check setup
assert crawler.identifiableAdapter.retrieve_identified_record_for_record(
identlist[0]).id == 1111
assert crawler.identifiableAdapter.retrieve_identified_record_for_record(
identlist[1]) is None
insert, update = crawler.split_into_inserts_and_updates(st)
assert len(insert) == 1
......@@ -515,10 +506,6 @@ def test_split_into_inserts_and_updates_backref(crawler_mocked_for_backref_test)
assert st.get_equivalent(st.nodes[1]) is None
assert st.get_equivalent(st.nodes[0]) is None
# one can be found remotely, one not
assert crawler.identifiableAdapter.retrieve_identified_record_for_record(
identlist[0]).id == 1111
assert crawler.identifiableAdapter.retrieve_identified_record_for_record(
identlist[1]) is None
# check the split...
insert, update = crawler.split_into_inserts_and_updates(st)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment