4 from string
import Template
7 validationToolsDir = os.environ[
'VALTOOLS']
8 validationTestDir = os.environ[
'VALTEST']
10 indexhtml = os.path.join(validationToolsDir,
"templates",
"index.html")
13 if not os.path.isfile(myFile):
14 raise IOError,
"Error! Can't stat %s!" % myFile
20 currentpath = os.path.abspath(os.getcwd())
21 title = currentpath.replace(os.path.abspath(validationTestDir),
'')
24 cmssw = os.environ[
'CMSSW_VERSION']
27 date = os.popen(
'date' ).
read()
33 difftoreleaselink =
CheckFile(
'Config/diffToVanillaRelease.patch')
34 difftorelease =
"cvs diff -r %s" % cmssw
36 difftotagslink =
CheckFile(
'Config/diffToTags.patch')
37 difftotags =
'cvs diff'
39 cfgdumplink =
'Config/cfgDump.py'
40 cfgdump =
'cfgDump.py'
41 if not os.path.isfile(cfgdumplink):
42 cfgdumplink =
'Config/cfgDump_0.py'
43 cfgdump =
'cfgDump_0.py (batch job)'
44 if os.path.isfile(
'Config/crab.cfg')
and not os.path.isfile(cfgdumplink):
45 cfgdumplink =
'Config/crab.cfg'
46 cfgdump =
'crab.cfg (grid job)'
48 print 'Did you forget to copy the crab.cfg in Config/ ?'
53 if title.find(
'fastsim') != -1:
54 genConfigLink = cfgdumplink
55 genConfig =
"fastsim (see cfgDump)"
57 elif title.find(
'fullsim') != -1:
58 genConfigLink = cfgdumplink
59 genConfig =
"fullsim (see cfgDump)"
61 genConfigLink =
"Config/DataSource_cff.py"
62 genConfig =
"DataSource_cff.py"
64 rootFiles = glob.glob(
"*root")
65 if len(rootFiles) != 1:
66 print "There must be one, and only one root file in the directory to correctly build the webpage!"
69 rootFileLink = os.path.basename(rootFiles[0])
73 imgTemplate =
'<IMG src="%s" width="500" align="left" border="0">'
74 fourImages =
'<table style="text-align: left; " border="1" cellpadding="2" cellspacing="0">\n\
77 <td style="width: 350px;"><IMG src="%s" width="350" align="left" border="0"></td>\
78 <td style="width: 350px;"><IMG src="%s" width="350" align="left" border="0"></td>\
79 <td style="width: 350px;"><IMG src="%s" width="350" align="left" border="0"></td>\
80 <td style="width: 350px;"><IMG src="%s" width="350" align="left" border="0"></td>\
81 </tr></tbody></table>\n\
87 StepByStepPlotDirectories =
filter(os.path.isdir, glob.glob(
"SummaryPlots/*"))
89 for aDir
in StepByStepPlotDirectories:
90 producerName = os.path.basename(aDir)
91 images +=
"<hr><h3>" + producerName +
"</h3>\n"
93 getByVar =
lambda x: glob.glob(os.path.join(aDir,
'*%s.png' % x))[0]
98 for line
in captionsContents:
100 (picfile, caption) = readCaption( line )
101 img = imgTemplate % os.path.basename(picfile)
102 images =
"%s<h3>%s:</h3>\n%s\n" % (images, caption, img)
105 shutil.copy(picfile, outputDir)
111 ComparisionDirectories =
filter(os.path.isdir, glob.glob(
"ComparedTo*"))
113 for aComp
in ComparisionDirectories:
114 comparisonlinks +=
'<h3>%s <a href="%s">(config)</a></h3>\n\n' % (aComp.replace(
'ComparedTo',
'Compared to '), os.path.join(aComp,
"ReferenceData"))
115 comparisonlinks +=
"<ul>\n"
116 for anHtmlFile
in filter(os.path.isfile, glob.glob(os.path.join(aComp,
"Plots/*.html"))):
117 comparisonlinks +=
'<li> <a href="%s">%s</a> </li>' % (anHtmlFile, os.path.basename(anHtmlFile).
replace(
".html",
""))
118 comparisonlinks +=
"</ul>\n"
120 ifile = open( indexhtml )
121 indexTemplate = ifile.read()
123 s = Template(indexTemplate)
124 subst = s.substitute(title = title,
125 difftotagslink=difftotagslink,
126 difftotags=difftotags,
127 difftoreleaselink=difftoreleaselink,
128 difftorelease=difftorelease,
129 cfgdumplink=cfgdumplink,
131 comparisonlinks=comparisonlinks,
132 genConfig = os.path.basename(genConfig),
133 genConfigLink = genConfigLink,
134 rootFile = os.path.basename(rootFile),
135 rootFileLink = rootFileLink,
140 username = os.environ[
'USER'],
143 ofile = open(
'index.html',
'w' )
tuple filter
USE THIS FOR SKIMMED TRACKS process.p = cms.Path(process.hltLevel1GTSeed*process.skimming*process.offlineBeamSpot*process.TrackRefitter2) OTHERWISE USE THIS.