Browse Source

Merge branch 'main' of https://github.com/Learnware-LAMDA/Learnware into rm_extra_market

tags/v0.3.2
bxdd 2 years ago
parent
commit
84aa905062
3 changed files with 48 additions and 2 deletions
  1. +3
    -0
      learnware/market/base.py
  2. +22
    -0
      learnware/market/easy/database_ops.py
  3. +23
    -2
      learnware/market/easy/organizer.py

+ 3
- 0
learnware/market/base.py View File

@@ -225,6 +225,9 @@ class LearnwareMarket:
"""
return self.learnware_organizer.get_learnwares(top, check_status, **kwargs)

def reload_learnware(self, learnware_id: str):
self.learnware_organizer.reload_learnware(learnware_id)
def get_learnware_zip_path_by_ids(self, ids: Union[str, List[str]], **kwargs) -> Union[Learnware, List[Learnware]]:
return self.learnware_organizer.get_learnware_zip_path_by_ids(ids, **kwargs)



+ 22
- 0
learnware/market/easy/database_ops.py View File

@@ -145,6 +145,28 @@ class DatabaseOperations(object):
pass
pass

def get_learnware_semantic_specification(self, id: str):
with self.engine.connect() as conn:
r = conn.execute(text("SELECT semantic_spec FROM tb_learnware WHERE id=:id;"), dict(id=id))
row = r.fetchone()
if row is None:
return None
else:
return json.loads(row[0])
pass
pass

def get_learnware_use_flag(self, id: str):
with self.engine.connect() as conn:
r = conn.execute(text("SELECT use_flag FROM tb_learnware WHERE id=:id;"), dict(id=id))
row = r.fetchone()
if row is None:
return None
else:
return int(row[0])
pass
pass
def load_market(self):
with self.engine.connect() as conn:
cursor = conn.execute(text("SELECT id, semantic_spec, zip_path, folder_path, use_flag FROM tb_learnware;"))


+ 23
- 2
learnware/market/easy/organizer.py View File

@@ -143,9 +143,11 @@ class EasyOrganizer(BaseOrganizer):
return False

zip_dir = self.learnware_zip_list[id]
os.remove(zip_dir)
if os.path.exists(zip_dir):
os.remove(zip_dir)
pass
folder_dir = self.learnware_folder_list[id]
rmtree(folder_dir)
rmtree(folder_dir, ignore_errors=True)
self.learnware_list.pop(id)
self.learnware_zip_list.pop(id)
self.learnware_folder_list.pop(id)
@@ -370,5 +372,24 @@ class EasyOrganizer(BaseOrganizer):
learnware_ids = self.get_learnware_ids(top, check_status)
return [self.learnware_list[idx] for idx in learnware_ids]

def reload_learnware(self, learnware_id: str):
current_learnware = self.learnware_list.get(learnware_id)

if current_learnware is None:
# add learnware
self.count += 1
else:
pass

target_zip_dir = os.path.join(self.learnware_zip_pool_path, "%s.zip" % (learnware_id))
target_folder_dir = os.path.join(self.learnware_folder_pool_path, learnware_id)
self.learnware_zip_list[learnware_id] = target_zip_dir
self.learnware_folder_list[learnware_id] = target_folder_dir
semantic_spec = self.dbops.get_learnware_semantic_specification(learnware_id)
self.learnware_list[learnware_id] = get_learnware_from_dirpath(
id=learnware_id, semantic_spec=semantic_spec, learnware_dirpath=target_folder_dir)
self.use_flags[learnware_id] = self.dbops.get_learnware_use_flag(learnware_id)
pass

def __len__(self):
return len(self.learnware_list)

Loading…
Cancel
Save