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

Public Member Functions

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

Public Attributes

 pageConfig
 
 globalConfig
 
 isConfigured
 

Static Public Attributes

 exposed
 

Detailed Description

Base class for creating CSS-based dynamic web pages.

Definition at line 267 of file WebPage.py.

Constructor & Destructor Documentation

◆ __init__()

def WebPage.WebPage.__init__ (   self,
**  args 
)
Constructor. You may override any of the default values in self.pageConfig by
   passing the corresponding value in a named variable.

Definition at line 270 of file WebPage.py.

270  def __init__(self, **args):
271  """Constructor. You may override any of the default values in self.pageConfig by
272  passing the corresponding value in a named variable."""
273  self.pageConfig = { 'contentType': '', # For plain CGI need: 'Content-type: text/html\n\n'
274  'pageName': '',
275  'pageTitle': '',
276  'pageHeaderSnippets': '',
277  'cssName': 'default.css',
278  'css_currentLink': 'acurrentlink',
279  'header': '',
280  'navigation': '',
281  'content': '',
282  'footer': '',
283  'keepEmptyHeader': False, # Set to true to anyway generate div if empty
284  'keepEmptyNavigation': False,
285  'keepEmptyContent': False,
286  'keepEmptyFooter': False
287  }
288  for k in args:
289  self.pageConfig[k] = args[k]
290  self.globalConfig = GlobalConfiguration()
291  self.isConfigured = False
292  pass
293 

Member Function Documentation

◆ addLink()

def WebPage.WebPage.addLink (   self,
  name,
  alias,
**  attrs 
)
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 
)
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 
)
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 WebPage.WebPage.configure (   self)
Final configuration of web application after all data is initialized.

Reimplemented in BeamSpotWebPage.BeamSpotWebPage.

Definition at line 347 of file WebPage.py.

347  def configure(self):
348  """Final configuration of web application after all data is initialized."""
349  self.configureLinks()
350  self.isConfigured = True
351  return
352 

◆ configureLinks()

def WebPage.WebPage.configureLinks (   self)
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 WebPage.WebPage.content (   self,
**  args 
)
Generate the page content. Default value comes from self.pageConfig['content'].

Reimplemented in JobBrowser.JobBrowser, BeamSpotSummary.BeamSpotSummary, MyPlots.MyPlots, JobDetails.JobDetails, DebugPage.DebugPage, WebPlots.WebPlots, FileBrowser.FileBrowser, and PlotServer.PlotServer.

Definition at line 391 of file WebPage.py.

391  def content(self, **args):
392  """Generate the page content. Default value comes from self.pageConfig['content']."""
393  return self.pageConfig['content'] % self.pageConfig
394 

◆ footer()

def WebPage.WebPage.footer (   self,
**  args 
)
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 
)
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 
)
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 
)
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)
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)
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
static

Definition at line 345 of file WebPage.py.

◆ globalConfig

WebPage.WebPage.globalConfig

Definition at line 290 of file WebPage.py.

◆ isConfigured

WebPage.WebPage.isConfigured

Definition at line 291 of file WebPage.py.

◆ pageConfig

WebPage.WebPage.pageConfig

Definition at line 273 of file WebPage.py.


The documentation for this class was generated from the following file:
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:68
WebPage.htmlDiv
def htmlDiv(id, contents='', attr='', keepEmptyDiv=True)
Definition: WebPage.py:46
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:364
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
makeTOC.header
header
Definition: makeTOC.py:28