allow only one "type" to be requested by mntner

This commit is contained in:
lare 2024-09-11 20:42:14 +02:00
parent 1dc6efe560
commit c9e595ab99

View file

@ -122,18 +122,19 @@ class Registry(object):
return True, self.index[objectType][objectFile]
return False, "not found"
def get_all_by_mntner(self, mntner: str) -> tuple[bool, dict or str]:
def get_all_by_mntner(self, mntner: str, requestedType:str = None) -> tuple[bool, dict or str]:
"requestedType: string of type, if None returns all"
def _load_by_mntner(mntner: str) -> dict:
ret = {}
for objectType in self.index:
for objectFile in self.index[objectType]:
if mntner in self.index[objectType][objectFile]["mnt-by"]:
if objectType in ret:
ret[objectType][objectFile] = self.index[objectType][objectFile]
else:
ret[objectType] = {
objectFile: self.index[objectType][objectFile]}
if requestedType == None or objectType == requestedType:
for objectFile in self.index[objectType]:
if mntner in self.index[objectType][objectFile]["mnt-by"]:
if objectType in ret:
ret[objectType][objectFile] = self.index[objectType][objectFile]
else:
ret[objectType] = {
objectFile: self.index[objectType][objectFile]}
return ret
# check if index is not yet initialized
@ -141,22 +142,25 @@ class Registry(object):
print("INFO: requested get_object, but index not yet created")
self._build_index()
if mntner in self._cache["mntner-objects"]:
if mntner in self._cache["mntner-objects"] and ("None" in self._cache["mntner-objects"][mntner].keys() or requestedType in self._cache["mntner-objects"][mntner].keys()):
if self._cache["expired"]:
# if the cache is expired: clear cache and reset "expired"
self._cache["mntner-objects"] = {}
self._cache["expired"] = False
ret = _load_by_mntner(mntner)
self._cache["mntner-objects"][mntner] = ret
self._cache["mntner-objects"][mntner] = {}
self._cache["mntner-objects"][mntner]["None" if requestedType == None else requestedType] = ret
if ret == {}:
return False, f"no objects found for {mntner}"
return True, ret
else:
return True, self._cache["mntner-objects"][mntner]
return True, self._cache["mntner-objects"][mntner]["None" if requestedType == None else requestedType]
else:
ret = _load_by_mntner(mntner)
if requestedType is not None and mntner in self._cache["mntner-objects"] and "None" in self._cache["mntner-objects"][mntner]:
ret = {requestedType: self._cache["mntner-objects"]}
else:
ret = _load_by_mntner(mntner)
self._cache["mntner-objects"][mntner] = ret
if ret == {}:
return False, f"no objects found for {mntner}"