def findFlows(self, request): user = ViewUtil.get_user(request) app_username = user.username os_username = ViewUtil.get_os_username() logger.debug("connect_flows:user: %s", user.username) workflowPath = ViewUtil.form_workflow_path(user) files = GraysonUtil.getDirs(of_dir=workflowPath) workdirs = GraysonUtil.findFilesByName(".*?\.grayson_upk$", files) response = [] for workdir in workdirs: logger.debug("connect_flows: workdir: %s", workdir) conf = None try: conf = GraysonUtil.readJSONFile(os.path.join(workdir, "grayson.conf")) except IOError as e: pass if conf: outputFile = conf["output-file"] files = GraysonUtil.getFiles(workdir, recursive=False) runs = GraysonUtil.getDirs( os.path.join(workdir, "work", os_username, "pegasus", outputFile.replace(".dax", "")) ) runs.sort() def normalize(line): return GraysonUtil.getUserRelativePath(line, app_username) runDirs = GraysonUtil.findFilesByName("[0-9]{8}T[0-9]{6}\-[0-9]{4}$", runs) item = { "flow": normalize(workdir), "id": outputFile, "runs": map(lambda p: " ".join([os.path.basename(p), self.get_job_status(p)]), runDirs), "graphs": GraysonUtil.findFilesByName(".*?.graphml$", files), "daxen": map(normalize, GraysonUtil.findFilesByName("[a-zA-Z0-9\._\-]+\.dax$", files)), } response.append(item) response.sort(key=lambda k: k["id"]) return response