CMS 3D CMS Logo

RefreshWebPage.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 from __future__ import print_function
4 import os
5 import glob
6 import sys
7 import re
8 import web_templates as templates
9 from optparse import OptionParser
10 from Validation.RecoTau.ValidationOptions_cff import allowedOptions
11 
12 __author__ = "Mauro Verzetti (mauro.verzetti@cern.ch)"
13 __doc__ = """Script to update the web-page to show newly updated results. First upload the TauID directory in the proper location in $PastResults"""
14 
15 parser = OptionParser(description=__doc__)
16 parser.add_option('--test',action="store_true", dest="test", default=False, help="used to test/debug the script. The html file are written locally")
17 (options,crap) = parser.parse_args()
18 
19 def unpackRelease(relName):
20  m = re.match(r'^CMSSW_(?P<one>[0-9]+)_(?P<two>[0-9]+)_(?P<three>[0-9]+)(?:_pre(?P<four>[0-9]+))?',relName)
21  if m:
22  prev = int(m.group('four')) if m.group('four') else 1000000
23  return (m.group('one'),m.group('two'),m.group('three'),prev)
24  return (0,0)
25 
26 try:
27  webDir = os.environ['PastResults']
28 except:
29  print('Run cmsenv and source UtilityCommands.(c)sh first!')
30  sys.exit(0)
31 
32 webDir += '/'
33 webDir_subdirs = [x for x in os.listdir( webDir ) if os.path.isdir(webDir+x)]
34 official_releases = sorted( [x for x in webDir_subdirs if re.findall(r'^CMSSW_[0-9]+_[0-9]+_[0-9]+(?:_pre[0-9]+)?$',x)], key=unpackRelease)
35 special_releases = sorted( [x for x in webDir_subdirs if re.findall(r'^CMSSW_[0-9]+_[0-9]+_[0-9]+',x) and not x in official_releases], key=unpackRelease)
36 custom_made = [d for d in webDir_subdirs if not d in official_releases and not d in special_releases]
37 
38 
39 official_releases_links = ''.join([templates.create_main_list_element(d) for d in official_releases])
40 special_releases_links = ''.join([templates.create_main_list_element(d) for d in special_releases])
41 custom_made_links = ''.join([templates.create_main_list_element(d) for d in custom_made])
42 main_web_page = templates.main_page_template % (official_releases_links, special_releases_links, custom_made_links)
43 main_web_page_path = webDir+'index.html' if not options.test else 'index.html'
44 main_web_page_html = open(main_web_page_path,'w')
45 main_web_page_html.write(main_web_page)
46 main_web_page_html.close()
47 
48 for rel in official_releases+special_releases:
49  tauid_dir = webDir+rel+'/TauID/'
50  reldir = webDir+rel+'/'
51  datasets = [x for x in os.listdir(tauid_dir) if os.path.isdir(tauid_dir+x) and not x == 'Reference']
52  cfg_file = glob.glob(tauid_dir+'*/Config/showtags.txt')[0] if glob.glob(tauid_dir+'*/Config/showtags.txt') else None
53  config = open(cfg_file).read() if cfg_file else 'NO CONFIGURATION AVAILABLE!'
54  data_html = []
55  for dataset in datasets:
56  dname = dataset.split('_')[0]
57  if not dname in allowedOptions['eventType']:
58  continue
59  pics = [path.split(rel+'/')[1] for path in glob.glob(tauid_dir+dataset+'/*.png')]
60  roots = glob.glob(tauid_dir+dataset+'/*.root')[0]
61  rootf = (roots).split(rel+'/')[1]
62  ref_file = (glob.glob(tauid_dir+'Reference/*'+dname+'.root')[0]).split(rel+'/')[1] if glob.glob(tauid_dir+'Reference/*'+dname+'.root') else None
63  source = 'TauID/'+dataset+'/Config/DataSource_cff.py' if os.path.isfile(tauid_dir+dataset+'/Config/DataSource_cff.py') else None
64  dir_link = 'TauID/'+dataset+'/'
65  data_html.append(templates.usual_validation_dataset_template(dname, rootf, ref_file, dir_link, pics, source) )
66  release_html_page = templates.usual_validation_template.substitute(THIS_RELEASE=rel,CONFIG=config,DATASETS=''.join(data_html) )
67  release_web_page_path = reldir+'index.html' if not options.test else 'index.html'
68  release_page_html = open(release_web_page_path,'w')
69  release_page_html.write(release_html_page)
70  release_page_html.close()
RefreshWebPage.unpackRelease
def unpackRelease(relName)
Definition: RefreshWebPage.py:19
join
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
cms::dd::split
std::vector< std::string_view > split(std::string_view, const char *)
createfilelist.int
int
Definition: createfilelist.py:10
edm::print
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
readEcalDQMStatus.read
read
Definition: readEcalDQMStatus.py:38