#!/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()