def __init__(self, oDb, tsNow, cPeriods, cHoursPerPeriod, sSubject, aidSubjects, # pylint: disable=R0913 aidTestBoxes, aidBuildCats, aidTestCases, fSepTestVars): assert(sSubject == self.ksSubEverything); # dummy ReportModelBase.__init__(self, oDb, tsNow, cPeriods, cHoursPerPeriod, sSubject, aidSubjects); self.aidTestBoxes = aidTestBoxes; self.aidBuildCats = aidBuildCats; self.aidTestCases = aidTestCases; self.fOnTestCase = not fSepTestVars; # (Separates testcase variations into separate data series.) self.oCache = DatabaseObjCache(self._oDb, self.tsNow, None, self.cPeriods * self.cHoursPerPeriod); # Quickly validate and convert the subject "IDs". self.aoLookups = []; for sCur in self.aidSubjects: asParts = sCur.split(':'); if len(asParts) < 2: raise TMExceptionBase('Invalid graph value "%s"' % (sCur,)); sType = asParts[0]; if sType not in ReportGraphModel.kasTypes: raise TMExceptionBase('Invalid graph value type "%s" (full: "%s")' % (sType, sCur,)); aidStrTests = []; for sIdStr in asParts[1:]: try: idStr = int(sIdStr); except: raise TMExceptionBase('Invalid graph value id "%s" (full: "%s")' % (sIdStr, sCur,)); if idStr < 0: raise TMExceptionBase('Invalid graph value id "%u" (full: "%s")' % (idStr, sCur,)); aidStrTests.append(idStr); idStrValue = None; if sType == ReportGraphModel.ksTypeValue: idStrValue = aidStrTests.pop(); self.aoLookups.append(ReportGraphModel.SampleSource(sType, aidStrTests, idStrValue));