view modules/web_view/display_issues.py @ 40:bef9105f2d28

Merge dashboardctl repository
author Gernot Schulz <gernot@intevation.de>
date Tue, 10 Nov 2015 11:47:46 +0100
parents f89ad628f831
children
line wrap: on
line source
#!/usr/bin/env python3

""" Display previously saved issues from a database on webpage via CGI.

author: Sascha L. Teichmann <sascha.teichmann@intevation.de>
author: Bernhard Reiter <bernhard@intevation.de>
author: Sean Engelhardt <sean.engelhardt@intevation.de>

(c) 2010,2015 by Intevation GmbH

This is Free Software unter the terms of the
GNU GENERAL PUBLIC LICENSE Version 3 or later.
See http://www.gnu.org/licenses/gpl-3.0.txt for details


##Usage Example: ##

render_db_stats_as_html(rcd.DATABASE_DEMO, rcd.SELECT_ALL)
"""

import sqlite3 as db
import cgitb, os, sys, inspect
import web_view.roundup_content_data as rcd

PATH = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
HTML_DATA = "graph.html"
PATH_TO_HTML = PATH + "/" + HTML_DATA

def make_js_object_string(array):
    formated = []

    for item in array:
        formated.append("{points: " + str(item) + "}")

    return ",".join(formated)


def make_js_object_date(array):
    formated = []

    for item in array:
        formated.append("{date : new Date('" + str(item) + "')}")

    return ", ".join(formated)


def get_webpage():

    with open(PATH_TO_HTML, "r") as html_chart_file:
        base_html_data = html_chart_file.read()

    base_html_data = (base_html_data
        .replace("var critical=[];", "var critical=[" + make_js_object_string(rcd.data_dict["critical"]) + "]")
        .replace("var urgent=[];", "var urgent=[" + make_js_object_string(rcd.data_dict["urgent"]) + "]")
        .replace("var bug=[];", "var bug=[" + make_js_object_string(rcd.data_dict["bug"]) + "]")
        .replace("var feature=[];", "var feature=[" + make_js_object_string(rcd.data_dict["feature"]) + "]")
        .replace("var wish=[];", "var wish=[" + make_js_object_string(rcd.data_dict["wish"]) + "]")
        .replace("var timestamp=[];", "var timestamp=[" + make_js_object_date(rcd.data_dict["date"]) + "]"))

    return base_html_data


# def render_webpage(content):
#     webpage_string = ""
#     for line in content.split("\n"):
#         print(line)


def render_db_stats_as_html(db_file, sql_select):

    con = None
    cur = None

    try:
        con = db.connect(db_file)
        cur = con.cursor()
        cur.execute(sql_select)

        for row in cur.fetchall():
            rcd.data_dict["date"].append(row[0])
            rcd.data_dict["critical"].append(row[1])
            rcd.data_dict["urgent"].append(row[2])
            rcd.data_dict["bug"].append(row[3])
            rcd.data_dict["feature"].append(row[4])
            rcd.data_dict["wish"].append(row[5])
    finally:
        if cur:
            cur.close()
        if con:
            con.close()

    # render_webpage(get_webpage())
    # print(get_webpage())
    return get_webpage()

# cgitb.enable()
# print("Content-Type: text/html")
# print()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)