4 Generates static HTML for the given database file.
5 Warrning!: did not finish the implementation, see TODO comment.
7 Author: Albertas Gimbutas, Vilnius University (LT)
8 e-mail: albertasgim@gmail.com
10 from __future__
import absolute_import
13 from os
import listdir, makedirs, getcwd
14 from os.path
import isfile, join, exists, dirname, basename
15 from .app_utils
import *
16 from optparse
import OptionParser
18 from jinja2
import Environment, FileSystemLoader, escape
19 env = Environment(loader=FileSystemLoader(
'templates'))
21 parser = OptionParser(usage=
'Usage: %prog --db PATH_TO_DB [options]')
22 parser.add_option(
'--db', action=
'store', dest=
'db_name',
23 help=
'Absolute path to SQLite3 database file.')
24 parser.add_option(
'--th', action=
'store', dest=
'threshold', default=1e-5,
25 help=
'Threshold to use for static HTML statistics. Default: %default.')
31 f = open(path +
'.html',
'w')
37 Generates static HTML from given release comparison database file.
38 Algorithm: iterates through database, renders Jinja2 templates and saves
39 them to static HTML files.
41 if not exists(db_name):
42 print "\nError: SQLite3 database file does not exsits. Exitting...\n"
45 conn = sqlite3.connect(db_name)
49 path =
join(work_path,
'static_html')
53 global_context = {
'db_name':
None ,
'threshold': threshold,
54 'file_id':
None,
'args': [],
'kwargs':
None}
55 global_context[
'static_html'] =
True
56 global_context[
'base_path'] = work_path.strip(
'/')
59 context = global_context.copy()
60 db_list_temp = env.get_template(
'db_list.html')
62 f = open(
join(path,
'index.html'),
'w')
63 f.write(db_list_temp.render(context))
66 c.execute(
'''SELECT id, title, statistical_test FROM ReleaseComparison;''')
67 releases = c.fetchall()
68 rel_summary_temp = env.get_template(
'release_summary.html')
69 dir_summary_temp = env.get_template(
'directory_summary.html')
72 for rel_id, release_title, st_test
in releases:
73 context = global_context.copy()
75 context[
'release_title'] = release_title
76 context[
'st_test'] = st_test
77 create_page([path, release_title, st_test], rel_summary_temp.render(context))
80 print 'Generating %s (%s) comparison pages...' % (release_title, st_test)
81 c.execute(
'''SELECT id, directory_id FROM RootFileComparison WHERE release_comparison_id = ?;''', (rel_id,))
82 for file_id, file_top_dir_id
in c.fetchall():
83 context[
'file_id'] = file_id
85 create_page([path, release_title, st_test, str(file_id)], dir_summary_temp.render(context))
87 c.execute(
'''SELECT id FROM Directory WHERE parent_id=?''', (file_top_dir_id,))
88 children_dirs = c.fetchall()
91 def create_dir_pages(c, dir_id, dir_path):
93 c.execute(
'''SELECT name FROM Directory WHERE id=?''', (dir_id,))
94 dir_path.append(c.fetchone()[0])
96 create_page([path, release_title, st_test, str(file_id)] + dir_path, dir_summary_temp.render(context))
99 for children_dir
in children_dirs:
100 create_dir_pages(c, children_dir[0], [])
104 if __name__ ==
'__main__':
105 opts, args = parser.parse_args()
def get_release_summary_stats
def db_list_with_releases
static std::string join(char **cmd)
def get_directory_summary_stats