Пример #1
0
 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}