diff --git a/learnware/market/database_ops.py b/learnware/market/database_ops.py index 9f864c5..272b9bb 100644 --- a/learnware/market/database_ops.py +++ b/learnware/market/database_ops.py @@ -71,6 +71,7 @@ def load_market_from_db(cur): learnware_list = {} zip_list = {} + folder_list = {} max_count = 0 for item in cursor: id, semantic_spec, zip_path, folder_path = item @@ -80,6 +81,7 @@ def load_market_from_db(cur): ) learnware_list[id] = new_learnware zip_list[id] = zip_path + folder_list = folder_path max_count = max(max_count, int(id)) LOGGER.info("Market Reloaded from DB.") - return learnware_list, max_count + 1 + return learnware_list, zip_list, folder_list, max_count + 1 diff --git a/learnware/market/easy.py b/learnware/market/easy.py index 4da0853..a218be4 100644 --- a/learnware/market/easy.py +++ b/learnware/market/easy.py @@ -22,13 +22,14 @@ class EasyMarket(BaseMarket): """Initializing an empty market""" self.learnware_list = {} # id: Learnware self.learnware_zip_list = {} + self.learnware_folder_list = {} self.count = 0 self.semantic_spec_list = C.semantic_specs self.reload_market() logger.info("Market Initialized!") def reload_market(self) -> bool: - self.learnware_list, self.count = load_market_from_db() + self.learnware_list, self.learnware_zip_list, self.learnware_folder_list, self.count = load_market_from_db() def check_learnware(self, learnware: Learnware) -> bool: """Check the utility of a learnware @@ -116,6 +117,7 @@ class EasyMarket(BaseMarket): else: self.learnware_list[id] = new_learnware self.learnware_zip_list[id] = target_zip_dir + self.learnware_folder_list[id] = target_folder_dir self.count += 1 add_learnware_to_db( id, @@ -381,10 +383,16 @@ class EasyMarket(BaseMarket): def delete_learnware(self, id: str) -> bool: if not id in self.learnware_list: raise Exception("Learnware id:'{}' NOT Found!".format(id)) - + + zip_dir = self.learnware_zip_list[id] + os.remove(zip_dir) + folder_dir = self.learnware_folder_list[id] + rmtree(folder_dir) self.learnware_list.pop(id) self.learnware_zip_list.pop(id) + self.learnware_folder_list.pop(id) delete_learnware_from_db(id) + return True def get_semantic_spec_list(self) -> dict: