def delete_metadata()

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)