| @@ -216,7 +216,18 @@ class LearnwareClient: | |||
| else: | |||
| stat_spec = None | |||
| returns = [] | |||
| returns = { | |||
| "single": { | |||
| "learnware_ids": [], | |||
| "semantic_specifications": [], | |||
| "matching": [], | |||
| }, | |||
| "multiple": { | |||
| "learnware_ids": [], | |||
| "semantic_specifications": [], | |||
| "matching": None, | |||
| }, | |||
| } | |||
| with tempfile.NamedTemporaryFile(prefix="learnware_stat_", suffix=".json") as ftemp: | |||
| if stat_spec is not None: | |||
| stat_spec.save(ftemp.name) | |||
| @@ -245,26 +256,16 @@ class LearnwareClient: | |||
| raise Exception("search failed: " + json.dumps(result)) | |||
| for learnware in result["data"]["learnware_list_single"]: | |||
| returns.append( | |||
| { | |||
| "type": "single", | |||
| "learnware_id": learnware["learnware_id"], | |||
| "semantic_specification": learnware["semantic_specification"], | |||
| "matching": learnware["matching"], | |||
| } | |||
| ) | |||
| returns["single"]["learnware_ids"].append(learnware["learnware_id"]) | |||
| returns["single"]["semantic_specifications"].append(learnware["semantic_specification"]) | |||
| returns["single"]["matching"].append(learnware["matching"]) | |||
| if len(result["data"]["learnware_list_multi"]) > 0: | |||
| multiple_learnware = { | |||
| "type": "multiple", | |||
| "learnware_ids": [], | |||
| "semantic_specifications": [], | |||
| "matching": result["data"]["learnware_list_multi"][0]["matching"], | |||
| } | |||
| for learnware in result["data"]["learnware_list_multi"]: | |||
| multiple_learnware["learnware_ids"].append(learnware["learnware_id"]) | |||
| multiple_learnware["semantic_specifications"].append(learnware["semantic_specification"]) | |||
| returns.append(multiple_learnware) | |||
| multi_learnware = result["data"]["learnware_list_multi"][0] | |||
| returns["multiple"]["learnware_ids"].append(multi_learnware["learnware_id"]) | |||
| returns["multiple"]["semantic_specifications"].append(multi_learnware["semantic_specification"]) | |||
| returns["multiple"]["matching"] = learnware["matching"] | |||
| return returns | |||
| @require_login | |||
| @@ -416,7 +417,7 @@ class LearnwareClient: | |||
| @staticmethod | |||
| def _check_semantic_specification(semantic_spec): | |||
| from ..market import EasySemanticChecker | |||
| check_status, message = EasySemanticChecker.check_semantic_spec(semantic_spec) | |||
| return check_status != BaseChecker.INVALID_LEARNWARE, message | |||