def import_packages(self, json_data): data = json.loads(json_data) settings = json.loads(load_settings()) translatable_strings = [f["name"] for f in settings["variables"]] group = settings["abf_projects_group"] if data["type"] == "files": values = data["values"] print(values) print(type(values)) return json.dumps({"packages": [full_project_info(group, f, translatable_strings) for f in values]}) elif data["type"] == "dir": values = data["values"] return json.dumps( {"packages": [full_project_info(group, f, translatable_strings) for f in os.listdir(values) if ".rpm" == f[-4:] and ".src.rpm" != f[-8:]]}) elif data["type"] == "custom": with_list = from_file_with_list(data["values"]) return json.dumps( {"packages": [full_project_info(group, f, translatable_strings) for f in with_list if ".rpm" == f[-4:]]}) elif data["type"] == "repo": values_ = data["values"][0] files = mirror_repo_to_tmp(values_) f_ = {"packages": [full_project_info(group, f, translatable_strings) for f in files if ".rpm" == f[-4:] and ".src.rpm" != f[-8:]]} result = json.dumps(f_) return result
def from_file_with_list(path): with open(path, 'r') as stream: try: loaded = yaml.load(stream)["places"] files = [f["path"] for f in loaded if f["type"] == "file"] directories = [f["path"] for f in loaded if f["type"] == "dir"] files_in_directories = [file for directory in directories for file in os.listdir(directory) if ".rpm" in file] files_from_repos = [mirror_repo_to_tmp(repo["values"][0]) for repo in loaded if repo["type"] == "repo"] return files + files_in_directories + files_from_repos except yaml.YAMLError as exc: return {"errors": exc}