Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-26 02:34:35

0001 #!/usr/bin/env python
0002 # coding: utf-8
0003 '''
0004 CherryPy application, which enables dynamic SQLite3 database file with release
0005 comparison information browsing. Database file can be generated with
0006 ``ValidationMatrix_v2.py`` script.
0007 
0008 Author:  Albertas Gimbutas,  Vilnius University (LT)
0009 e-mail:  albertasgim@gmail.com
0010 '''
0011 import cherrypy as cpy
0012 import sqlite3
0013 from os.path import isfile
0014 from jinja2 import Environment, FileSystemLoader, escape
0015 from .app_utils import *
0016 
0017 env = Environment(loader=FileSystemLoader('templates'))
0018 
0019 
0020 class BrowseDB:
0021     """
0022     CherryPy application for release comparison browsing from SQLite3 database files.
0023     The SQLite3 database files have to placed in the same directory as this script.
0024     """
0025     @cpy.expose
0026     def default(self, db_name=None, release_title=None, st_test=None, file_id=None, *args, **kwargs):
0027         """CherryPy controller, which handles all Http requests."""
0028         if kwargs:
0029             threshold = float(kwargs['threshold'])
0030         else:
0031             threshold = None
0032 
0033         context = {'db_name':db_name, 'release_title':release_title,
0034                    'threshold': threshold, 'st_test':st_test,
0035                    'file_id':file_id, 'args':args, 'kwargs':kwargs}
0036         if not threshold:
0037             threshold = 1e-5
0038 
0039         db_list_temp = env.get_template('db_list.html')
0040         if not db_name:
0041             context['db_list'] = db_list_with_releases()
0042             return db_list_temp.render(context)
0043 
0044         if not isfile(db_name + '.db'):
0045             context['db_list'] = db_list_with_releases()
0046             context['error'] = 'Does not exist: %s.db' % db_name
0047             return db_list_temp.render(context)
0048 
0049         conn = sqlite3.connect(db_name + '.db')
0050         c = conn.cursor()
0051         if not release_title or not st_test:
0052             rel_list_temp = env.get_template('release_list.html')
0053             context['release_list'] = get_release_list(c)
0054             return rel_list_temp.render(context)
0055 
0056         if not file_id:
0057             rel_summary_temp = env.get_template('release_summary.html')
0058             context.update(get_release_summary_stats(c, release_title,
0059                                               st_test, threshold))
0060             return rel_summary_temp.render(context)
0061 
0062         dir_summary_temp = env.get_template('directory_summary.html')
0063         context.update(get_directory_summary_stats(c, args, file_id, threshold))
0064         return dir_summary_temp.render(context)
0065 
0066 
0067 if __name__ == '__main__':
0068     cpy.quickstart(BrowseDB())