def test_external_ref(app_with_data_f): app = app_with_data_f() with app.app_context(): entrywrite.add_entries("places", places, "test", resource_version=1) entrywrite.add_entries( "municipalities", municipalities, "test", resource_version=1 ) referenced_entries = list(network.get_referenced_entries("places", 1, "3")) assert len(referenced_entries) == 1 assert referenced_entries[0]["entry_id"] == "1" referenced_entries = list(network.get_referenced_entries("places", 1, "4")) assert 3 == len(referenced_entries) ref_municipalities = [ entry for entry in referenced_entries if entry["resource_id"] == "municipalities" ] assert ref_municipalities[0]["entry_id"] in ["2", "3"] assert ref_municipalities[1]["entry_id"] in ["2", "3"] assert ref_municipalities[0]["entry_id"] != ref_municipalities[1]["id"] referenced_entries = list(network.get_referenced_entries("places", 1, "5")) assert len(referenced_entries) == 3 ref_municipalities = [ entry for entry in referenced_entries if entry["resource_id"] == "municipalities" ] assert ref_municipalities[0]["entry_id"] in ["2", "3"] assert ref_municipalities[1]["entry_id"] in ["2", "3"] assert ref_municipalities[0]["entry_id"] != ref_municipalities[1]["id"]
def test_no_refs_2(app_with_data_f): app = app_with_data_f() with app.app_context(): entrywrite.add_entries("places", places[0:2], "test", resource_version=1) referenced_entries = list(network.get_referenced_entries("places", 1, "3")) assert len(referenced_entries) == 0 referenced_entries = list(network.get_referenced_entries("places", 1, "4")) assert len(referenced_entries) == 0
def test_virtual_internal_ref(app_with_data_f): app = app_with_data_f() with app.app_context(): entrywrite.add_entries("places", places[1:3], "test", resource_version=1) referenced_entries = list(network.get_referenced_entries("places", 1, "4")) assert 1 == len(referenced_entries) assert referenced_entries[0]["entry_id"] == "5"
def test_virtual_external_ref(app_with_data_f): app = app_with_data_f() with app.app_context(): entrywrite.add_entries("places", places[0:1], "test", resource_version=1) entrywrite.add_entries( "municipalities", municipalities[0:1], "test", resource_version=1 ) referenced_entries = list( network.get_referenced_entries("municipalities", 1, "1") ) assert 1 == len(referenced_entries) assert referenced_entries[0]["resource_id"] == "places" assert referenced_entries[0]["entry_id"] == "3"
def _update_references(resource_id: str, entry_ids: List[str]) -> None: add = collections.defaultdict(list) for src_entry_id in entry_ids: refs = network.get_referenced_entries(resource_id, None, src_entry_id) for field_ref in refs: ref_resource_id = field_ref["resource_id"] ref_resource = resourcemgr.get_resource( ref_resource_id, version=(field_ref["resource_version"])) body = transform_to_index_entry( ref_resource, field_ref["entry"], ref_resource.config["fields"].items()) metadata = resourcemgr.get_metadata(ref_resource, field_ref["id"]) add[ref_resource_id].append( ((field_ref["entry_id"]), metadata, body)) for ref_resource_id, ref_entries in add.items(): indexer.impl.add_entries(ref_resource_id, ref_entries)