in aristotle/aristotle.py [0:0]
def delete_metadata(self, sid, key, value=None):
""" Update self.metadata_dict and self.keys_dict data structures for the
given sid, deleting the passed in key and value. If value is not
provided (or None), delete all references involving the given key.
:param sid: sid to update
:type sid: int, required
:param key: key to add or update
:type key: string, required
:param value: value corresponding to given key
:type value: string, optional
"""
key = key.lower().strip()
if value:
value = value.lower().strip()
if sid not in self.metadata_dict.keys():
print_error("delete_metadata() called for sid '{}' but sid is invalid (does not exist).".format(sid))
return
if value is None:
if key in self.metadata_dict[sid]['metadata'].keys():
del self.metadata_dict[sid]['metadata'][key]
else:
print_debug("key '{}' not found in sid '{}', cannot delete.".format(key, sid))
if key in self.keys_dict.keys():
for value in self.keys_dict[key].keys():
if sid in self.keys_dict[key][value]:
self.keys_dict[key][value].remove(sid)
else:
if key in self.metadata_dict[sid]['metadata'].keys():
if value in self.metadata_dict[sid]['metadata'][key]:
self.metadata_dict[sid]['metadata'][key].remove(value)
if key in self.keys_dict.keys():
if value in self.keys_dict[key].keys():
if sid in self.keys_dict[key][value]:
self.keys_dict[key][value].remove(sid)