#!/usr/bin/env python3
# -*- encoding: UTF8 -*-
##############################################################################
#
# Copyright (c) 2008,2017 Perforce Software, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# = Description
#
# Runs reports on Sqlite3 database produced by log2sql.py
#
##############################################################################
from __future__ import print_function
import sys
import os
import argparse
import sqlite3
import pandas as pd
import numpy as np
from jinja2 import Environment, FileSystemLoader
from weasyprint import HTML
python3 = sys.version_info[0] >= 3
def main():
parser = argparse.ArgumentParser(add_help=True)
parser.add_argument('-d', '--dbname', help="Database name to use", default=None)
parser.add_argument('-o', '--output', help="Name of file to print to", default="report.pdf")
try:
options = parser.parse_args()
except:
parser.print_help()
sys.exit(1)
if not options.dbname:
print("Please specify -d/--dbname\n\n")
parser.print_help()
sys.exit(1)
# Read in the file and get our pivot table summary
conn = sqlite3.connect("%s.db" % options.dbname)
df = pd.read_sql_query("SELECT distinct(cmd) from process", conn)
# Do our templating now
# We can specify any directory for the loader but for this example, use current directory
env = Environment(loader=FileSystemLoader('.'))
template = env.get_template("template_logreport.html")
template_vars = {"title" : "P4D Log Report",
"log_report1": df.to_html()}
# Render our file and create the PDF using our css style file
html_out = template.render(template_vars)
output = options.output
if not ".pdf" in output:
output = "%s.pdf" % output
HTML(string=html_out).write_pdf(output, stylesheets=["style.css"])
if __name__ == '__main__':
main()