comparison roundup_cc_display.py @ 28:e2864dabdb8c

fixes a logical error in the filtering of columns. * The columns are stored in the pure order as they appear in the config. * display_issues.py has been renamed to roundup_cc_display.py.
author Magnus Schieder <mschieder@intevation.de>
date Thu, 22 Nov 2018 12:57:20 +0100
parents display_issues.py@7161ce4e7ab1
children
comparison
equal deleted inserted replaced
27:cdab667c6abb 28:e2864dabdb8c
1 #!/usr/bin/env python3
2
3 """ Display previously saved issues from a database on webpage via CGI.
4
5 author: Sascha L. Teichmann <sascha.teichmann@intevation.de>
6 author: Bernhard Reiter <bernhard@intevation.de>
7 author: Sean Engelhardt <sean.engelhardt@intevation.de>
8
9 (c) 2010,2015 by Intevation GmbH
10
11 This is Free Software unter the terms of the
12 GNU GENERAL PUBLIC LICENSE Version 3 or later.
13 See http://www.gnu.org/licenses/gpl-3.0.txt for details
14
15
16 ##Usage Example: ##
17 see display_issues_demo.py or __main__ section below.
18 """
19
20 import sqlite3 as db
21 import cgitb
22 import roundup_content_data as rcd
23 import os
24
25
26 def make_js_object_string(array):
27 formated = []
28
29 for item in array:
30 formated.append("{points: " + str(item) + "}")
31
32 return ",".join(formated)
33
34
35 def make_js_object_date(array):
36 formated = []
37
38 for item in array:
39 formated.append("{date : new Date('" + str(item) + "')}")
40
41 return ", ".join(formated)
42
43 def get_webpage(data_dict, columns, status, keywords, graph=None):
44
45 if graph is None:
46 graph = os.path.dirname(os.path.realpath(__file__)) + '/graph.html'
47
48 with open(graph, "r") as html_chart_file:
49 base_html_data = html_chart_file.read()
50
51 if "None" not in columns:
52 data_dict["None"] = [0]
53
54
55 js_data_dickt ="{"
56 for col in columns.split(", "):
57 js_data_dickt += col + ":[" + make_js_object_string(data_dict[col]) + "],"
58 js_data_dickt += "}"
59
60 base_html_data = (base_html_data
61 .replace("status", status)
62 .replace("keywords", keywords)
63 .replace("js_data_dickt", js_data_dickt)
64 .replace("var timestamp=[];", "var timestamp=[" + make_js_object_date(data_dict["date"]) + "]"))
65
66 return base_html_data
67
68 def compile_db_stats_html(db_file, sql_select, columns, status="", keywords="", graph=None):
69
70 data_dict = {"date": []}
71 status_list = columns.split(", ")
72 for x in status_list:
73 data_dict[x] = []
74
75 con = None
76 cur = None
77
78 try:
79 con = db.connect(db_file)
80 cur = con.cursor()
81 cur.execute(sql_select)
82
83 for row in cur.fetchall():
84 data_dict["date"].append(row[0])
85 for x in range(len(status_list)):
86 data_dict[status_list[x]].append(row[x+1])
87
88 finally:
89 if cur:
90 cur.close()
91 if con:
92 con.close()
93
94 return get_webpage(data_dict, columns, status, keywords, graph)
95
96 def render_webpage(content):
97 for line in content.split("\n"):
98 print(line)
99
100 def render_db_stats_as_html(db_file, sql_select, columns, status="", keywords=""):
101 render_webpage(compile_db_stats_html(db_file, sql_select, columns, status, keywords))
102
103 if __name__ == '__main__':
104 cgitb.enable()
105 #spit out HTML file directly, thus no need to give headers to the server
106 #print("Content-Type: text/html")
107 #print()
108
109 render_db_stats_as_html("./demo3.db", rcd.SELECT_ALL)
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)