ATLAS Offline Software
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
BeamSpotSummary.BeamSpotSummary Class Reference
Inheritance diagram for BeamSpotSummary.BeamSpotSummary:
Collaboration diagram for BeamSpotSummary.BeamSpotSummary:

Public Member Functions

def __init__ (self)
 
def content (self, **args)
 
def configure (self)
 
def pageName (self)
 
def addPage (self, name, page, **attrs)
 
def addLink (self, name, alias, **attrs)
 
def addToPageHeader (self, snippet)
 
def index (self, **args)
 
def configureLinks (self)
 
def override (self)
 
def header (self, **args)
 
def navigation (self, **args)
 
def footer (self, **args)
 

Public Attributes

 pageConfig
 
 globalConfig
 
 isConfigured
 

Static Public Attributes

 exposed
 

Detailed Description

Definition at line 63 of file BeamSpotSummary.py.

Constructor & Destructor Documentation

◆ __init__()

def BeamSpotSummary.BeamSpotSummary.__init__ (   self)

Definition at line 65 of file BeamSpotSummary.py.

65  def __init__(self):
66  BeamSpotWebPage.__init__(self)
67  self.pageConfig['pageTitle'] = 'ATLAS Beam Spot Summary'
68  self.addToPageHeader(tableSorter)
69 

Member Function Documentation

◆ addLink()

def WebPage.WebPage.addLink (   self,
  name,
  alias,
**  attrs 
)
inherited
Add a new link to the page tree. Links share page objects with
   other pages through aliasing. This allows using different links
   with different queries to the same page as if they were separate
   pages. For links, highlighting of the current page is disabled
   (if enabled, all links leading to the same page would be
   highlighted).

Definition at line 309 of file WebPage.py.

309  def addLink(self, name, alias, **attrs):
310  """Add a new link to the page tree. Links share page objects with
311  other pages through aliasing. This allows using different links
312  with different queries to the same page as if they were separate
313  pages. For links, highlighting of the current page is disabled
314  (if enabled, all links leading to the same page would be
315  highlighted)."""
316  self.globalConfig.pageList.append(name)
317  self.globalConfig.pageAttributes[name] = dict(attrs)
318  self.globalConfig.pageAttributes[name]['alias'] = alias
319 

◆ addPage()

def WebPage.WebPage.addPage (   self,
  name,
  page,
**  attrs 
)
inherited
Add a new web page to the page tree. All pages added via addPage
   share the same GlobalConfiguration object.

Definition at line 300 of file WebPage.py.

300  def addPage(self, name, page, **attrs):
301  """Add a new web page to the page tree. All pages added via addPage
302  share the same GlobalConfiguration object."""
303  page.globalConfig = self.globalConfig
304  page.pageConfig['pageName'] = name
305  self.globalConfig.pageList.append(name)
306  self.globalConfig.pageAttributes[name] = dict(attrs)
307  setattr(self,name,page) # Link page into page tree (for CherryPy)
308 

◆ addToPageHeader()

def WebPage.WebPage.addToPageHeader (   self,
  snippet 
)
inherited
Add a snippet of code to the page header. Use this e.g. to include JavaScript libraries.

Definition at line 320 of file WebPage.py.

320  def addToPageHeader(self, snippet):
321  """Add a snippet of code to the page header. Use this e.g. to include JavaScript libraries."""
322  self.pageConfig['pageHeaderSnippets'] += snippet
323 

◆ configure()

def BeamSpotWebPage.BeamSpotWebPage.configure (   self)
inherited
Final configuration of web application after all data is initialized.

Reimplemented from WebPage.WebPage.

Definition at line 49 of file BeamSpotWebPage.py.

49  def configure(self):
50  self.pageConfig['cssName'] = self.globalConfig.baseUrl+'/css/beamspot.css'
51  if not self.pageConfig.get('pageTitle',''):
52  self.pageConfig['pageTitle'] = 'ATLAS Beam Spot Web Page'
53  self.pageConfig['header'] = header
54  self.pageConfig['footer'] = footer
55  WebPage.configure(self)
56 
57 

◆ configureLinks()

def WebPage.WebPage.configureLinks (   self)
inherited
Based on configuration data, for each web page create two link entries in pageConfig:
   The first entry has the form url_PAGENAME and contains the complete URL to link to
   a page. The second entry is named href_PAGENAME and contains style information and a
   href= prefix with proper quotation marks in addition to the URL. These link entries
   should be used to generate links in HTML pages with snippets like <a %(href_PAGENAME)s>
   or <a href="%(url_PAGENAME)>. The link entries can only be generated once all
   configuration data is available, ie configureLinks must be called from configure
   and not from __init__.

Definition at line 353 of file WebPage.py.

353  def configureLinks(self):
354  """Based on configuration data, for each web page create two link entries in pageConfig:
355  The first entry has the form url_PAGENAME and contains the complete URL to link to
356  a page. The second entry is named href_PAGENAME and contains style information and a
357  href= prefix with proper quotation marks in addition to the URL. These link entries
358  should be used to generate links in HTML pages with snippets like <a %(href_PAGENAME)s>
359  or <a href="%(url_PAGENAME)>. The link entries can only be generated once all
360  configuration data is available, ie configureLinks must be called from configure
361  and not from __init__."""
362  for p in self.globalConfig.pageList:
363  page = self.globalConfig.pageAttributes[p].get('alias',p)
364  query = self.globalConfig.pageAttributes[p].get('query','')
365  style = self.globalConfig.pageAttributes[p].get('style',None)
366  self.pageConfig['url_'+p] = '%s/%s/%s' % (self.globalConfig.baseUrl,page,query)
367  if p==self.pageName():
368  self.pageConfig['href_'+p] = 'href="%s/%s/%s" class="%s"' % (self.globalConfig.baseUrl,page,query,self.pageConfig['css_currentLink'])
369  else:
370  if style:
371  self.pageConfig['href_'+p] = 'href="%s/%s/%s" class="%s"' % (self.globalConfig.baseUrl,page,query,style)
372  else:
373  self.pageConfig['href_'+p] = 'href="%s/%s/%s"' % (self.globalConfig.baseUrl,page,query)
374 

◆ content()

def BeamSpotSummary.BeamSpotSummary.content (   self,
**  args 
)
Generate the page content. Default value comes from self.pageConfig['content'].

Reimplemented from WebPage.WebPage.

Definition at line 70 of file BeamSpotSummary.py.

70  def content(self,**args):
71  if 'type' in args:
72  type = args['type']
73  else:
74  type = ''
75  limit = int(args['limit']) if 'limit' in args else 50
76  with TaskManager(self.globalConfig['taskDb']) as taskman:
77  if not limit:
78  limit = 99999999
79  table = runCount % (taskman.getCount('distinct(runnr)',[ "where TASKNAME like '%s%%'" % type]), type)
80  else:
81  table = runCountLimit % (taskman.getCount('distinct(runnr)',[ "where TASKNAME like '%s%%'" % type]), type,limit)
82  table += tableHeader % type
83  for r in taskman.taskIterDict('distinct(DSNAME),RUNNR',["where TASKNAME like '%s%%' order by RUNNR desc" % type], limit):
84  runnr = r['RUNNR']
85  dsname = r['DSNAME']
86  try:
87  stream = dsname.split('.')[-1].split('_')[-1]
88  except:
89  stream = ''
90  if not runnr: continue
91  table += "<tr>"
92  table += '<td><a href="http://atlas-runquery.cern.ch/query.py?q=find+r+%s+/+sh+lhc+all+and+r+and+t+and+mag+and+dq+idbs,pix,sct">%s</a></td>' % (runnr,runnr)
93  table += '<td>%s</td>' % stream
94  try:
95  t = taskman.taskIterDict('*',['where RUNNR =',DbParam(runnr),'and DSNAME =',DbParam(dsname),"and TASKNAME like '%s%%' order by UPDATED desc" % type]).next()
96  taskName = t['TASKNAME']
97  datatag = taskName.split('.')[-1].split('_')[0]
98  if taskName[:11] == 'DB_BEAMSPOT.':
99  # Special naming convention for T0 beam spot jobs
100  monTaskName = 'MON.%s.%s' % (taskName,datatag)
101  elif taskName[:-1] == 'REPROHIMAR2011_BEAMSPOT.r2074.v':
102  # Kludge to fix inconsistent naming for Mar 2011 HI reprocessing jobs
103  monTaskName = 'MON.REPROHIMAR2011_BEAMSPOT.r2074'
104  else:
105  # Other monitoring jobs
106  monTaskName = 'MON.%s%%' % (taskName)
107  try:
108  m = taskman.taskIterDict('*',['where RUNNR =',DbParam(runnr),'and DSNAME =',DbParam(dsname),'and TASKNAME like ',DbParam(monTaskName),'order by UPDATED desc']).next()
109  stat = m['STATUS']
110  monStatus = '<td class="%s"><a href="../details?d=%s&t=%s">%s</a></td>' % (getStatusClass(stat),t['DSNAME'],m['TASKNAME'],getKey(TaskManager.StatusCodes,stat))
111  monResults = "<td>%s</td>" % (blankIfNone(m['RESULTLINKS']))
112  except:
113  monStatus = '<td></td>'
114  monResults = '<td></td>'
115  table += '<td><a href="../details?d=%s&t=%s">%s</a></td>' % (t['DSNAME'],taskName,taskName)
116  table += "<td>%s</td>" % (time.ctime(t['UPDATED']))
117  stat = t['STATUS']
118  table += '<td class="%s">%s</td>' % (getStatusClass(stat),getKey(TaskManager.StatusCodes,stat))
119  table += "<td>%s</td>" % (blankIfNone(t['RESULTLINKS']))
120  table += "<td>"
121  cooltags = t['COOLTAGS']
122  if not cooltags:
123  cooltags = '' # make sure it is not None
124  for tag in cooltags.split():
125  table += '<a href="http://atlas-runquery.cern.ch/query.py?q=find+run+%s+/+show+bs+%s">%s</a> ' % (runnr,tag,tag)
126  table += '<br>'
127  table += "</td>"
128  except Exception as e:
129  table += "<td>%s</td>" % str(e)
130  table += "<td></td>"
131  table += "<td></td>"
132  table += "<td></td>"
133  table += "<td></td>"
134  monStatus = '<td></td>'
135  monResults = '<td></td>'
136  table += monStatus
137  table += monResults
138  table += '<td><a href="../jobs?r=%s">all tasks</a></td>' % runnr
139  table += "</tr>\n"
140  table += "</tbody></table>\n"
141  return table
142 
143 
144 # Code to test or run locally

◆ footer()

def WebPage.WebPage.footer (   self,
**  args 
)
inherited
Generate the footer. Default value comes from self.pageConfig['footer'].

Definition at line 395 of file WebPage.py.

395  def footer(self, **args):
396  """Generate the footer. Default value comes from self.pageConfig['footer']."""
397  return self.pageConfig['footer'] % self.pageConfig
398 
399 
400 # Example configuration file on how to run CherryPy with Apache mod_python:
401 #
402 # <Location "/">
403 # PythonPath "sys.path+['/whatever']"
404 # SetHandler python-program
405 # PythonHandler cherrypy._cpmodpy::handler
406 # PythonOption cherrypy.setup WebPage::setup_server
407 # PythonDebug On
408 # </Location>
409 #
410 #import cherrypy
411 #def setup_server():
412 # cherrypy.config.update({'environment': 'production',
413 # 'log.screen': False,
414 # 'server.socket_host': '127.0.0.1',
415 # 'log.error_file': '/tmp/site.log',
416 # 'show_tracebacks': False})
417 # cherrypy.tree.mount(WebPage())
418 
419 
420 # Test code

◆ header()

def WebPage.WebPage.header (   self,
**  args 
)
inherited
Generate the page header. Default value comes from self.pageConfig['header'].

Definition at line 383 of file WebPage.py.

383  def header(self, **args):
384  """Generate the page header. Default value comes from self.pageConfig['header']."""
385  return self.pageConfig['header'] % self.pageConfig
386 

◆ index()

def WebPage.WebPage.index (   self,
**  args 
)
inherited
Return the complete page.

Definition at line 324 of file WebPage.py.

324  def index(self, **args):
325  """Return the complete page."""
326  if not self.isConfigured:
327  self.configure()
328  s = self.override()
329  if not s:
330  self.pageConfig['timeStamp'] = time.strftime('%a %b %d %X %Z %Y')
331  contents = self.content(**args) # Make sure contents is run first (so it
332  # can change any pageConfig entries if desired
333  s = startPage % self.pageConfig
334  s = s + htmlDiv('header', self.header(**args),
335  keepEmptyDiv=self.pageConfig['keepEmptyHeader'])
336  s = s + htmlDiv('navigation', self.navigation(**args),
337  keepEmptyDiv=self.pageConfig['keepEmptyNavigation'])
338  s = s + htmlDiv('content', contents,
339  keepEmptyDiv=self.pageConfig['keepEmptyContent'])
340  s = s + htmlDiv('footer', self.footer(**args),
341  keepEmptyDiv=self.pageConfig['keepEmptyFooter'])
342  s = s + endPage
343  return s

◆ navigation()

def WebPage.WebPage.navigation (   self,
**  args 
)
inherited
Generate the navigation bar. Default value comes from self.pageConfig['navigation'].

Definition at line 387 of file WebPage.py.

387  def navigation(self, **args):
388  """Generate the navigation bar. Default value comes from self.pageConfig['navigation']."""
389  return self.pageConfig['navigation'] % self.pageConfig
390 

◆ override()

def WebPage.WebPage.override (   self)
inherited
Override provides a hook where code to generate or redirect to an alternative
   page can be placed by derived classes. If not override of the normal page is
   desired, override should return None. Otherwise it should either raise an
   appropriate exception or return a string containing the complete alternate page
   to display.

Definition at line 375 of file WebPage.py.

375  def override(self):
376  """Override provides a hook where code to generate or redirect to an alternative
377  page can be placed by derived classes. If not override of the normal page is
378  desired, override should return None. Otherwise it should either raise an
379  appropriate exception or return a string containing the complete alternate page
380  to display."""
381  return None
382 

◆ pageName()

def WebPage.WebPage.pageName (   self)
inherited
Short cut to retrieve the name (the last element in the URL)
   of the current page. This works only if the page has been
   added into the page tree using addPage.

Definition at line 294 of file WebPage.py.

294  def pageName(self):
295  """Short cut to retrieve the name (the last element in the URL)
296  of the current page. This works only if the page has been
297  added into the page tree using addPage."""
298  return self.pageConfig['pageName']
299 

Member Data Documentation

◆ exposed

WebPage.WebPage.exposed
staticinherited

Definition at line 345 of file WebPage.py.

◆ globalConfig

WebPage.WebPage.globalConfig
inherited

Definition at line 290 of file WebPage.py.

◆ isConfigured

WebPage.WebPage.isConfigured
inherited

Definition at line 291 of file WebPage.py.

◆ pageConfig

WebPage.WebPage.pageConfig
inherited

Definition at line 273 of file WebPage.py.


The documentation for this class was generated from the following file:
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
configure
bool configure(asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > &tool, ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > &electronEffToolsHandles, ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > &electronSFToolsHandles, ToolHandleArray< CP::IMuonTriggerScaleFactors > &muonToolsHandles, ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > &photonEffToolsHandles, ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > &photonSFToolsHandles, const std::string &triggers, const std::map< std::string, std::string > &legsPerTool, unsigned long nToys, bool debug)
Definition: TrigGlobEffCorrValidation.cxx:514
BeamSpotWebPage.footer
string footer
Definition: BeamSpotWebPage.py:32
grepfile.content
string content
Definition: grepfile.py:56
DeMoGenerateWWW.addLink
def addLink(l)
When https is found in a character line, add a link in html If none, simply return the line unchanged...
Definition: DeMoGenerateWWW.py:67
fillPileUpNoiseLumi.next
next
Definition: fillPileUpNoiseLumi.py:52
WebPage.htmlDiv
def htmlDiv(id, contents='', attr='', keepEmptyDiv=True)
Definition: WebPage.py:46
python.Utils.blankIfNone
def blankIfNone(s)
Definition: InnerDetector/InDetExample/InDetBeamSpotExample/python/Utils.py:41
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
DeMoScan.index
string index
Definition: DeMoScan.py:362
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
python.TaskManager.getStatusClass
def getStatusClass(status)
Definition: TaskManager.py:53
str
Definition: BTagTrackIpAccessor.cxx:11
pool::getKey
std::string getKey(const std::string &key, const std::string &encoded)
makeTOC.header
header
Definition: makeTOC.py:28
Trk::split
@ split
Definition: LayerMaterialProperties.h:38