File indexing completed on 2024-11-26 02:34:35
0001
0002
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())