def _queryTrObjsByCatView(wlNames=None, areaIds=None, areaNames=None, branchNames=None, testerIds=None, bldTypes=None): def _argsWrapper(args): if not args: return [None] else: return args if not wlNames: wlIds = [None] else: from workload import Workload wlIds = Workload.getWorkloadIds(wlNames) if areaNames: areaIds = Area.getAreaIds(areaNames) elif areaIds: childrenIds = Area.getChildrenAreaIds(areaIds) if childrenIds: areaIds.extend(childrenIds) else: areaIds = [None] # The order for filterKey and filterLoop should be matched filterKey = ['workload', 'area__id__in', 'deliverables__build__branch__in', 'tester__id__in', 'deliverables__build__bldtype__in'] filterLoop = itertools.product(wlIds, areaIds, _argsWrapper(branchNames), _argsWrapper(testerIds), _argsWrapper(bldTypes)) filterLoop = list(filterLoop) trObjs = [] for item in filterLoop: filterMap = {} for i in range(len(item)): if item[i] is None: continue filterMap[filterKey[i]] = item[i] logger.info("Retrieving testrun data via RestAPI with filterInfo: %s", filterMap) tmpTrObjs = queryCatInfo('testrun', filterMap, limitDay=limitDay, limit=limitNumber, orderBy="-endtime") if tmpTrObjs: logger.info("Totally get %d testruns" % len(tmpTrObjs)) trObjs.extend(tmpTrObjs) return trObjs