mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-31 18:58:01 +00:00
lf_report: Use only 4 spaces per indent, this is python, not javascript
Signed-off-by: Matthew Stidham <stidmatt@gmail.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
'''
|
"""
|
||||||
NAME: lf_report.py
|
NAME: lf_report.py
|
||||||
|
|
||||||
PURPOSE:
|
PURPOSE:
|
||||||
@@ -23,7 +23,7 @@ LICENSE:
|
|||||||
|
|
||||||
|
|
||||||
INCLUDE_IN_README
|
INCLUDE_IN_README
|
||||||
'''
|
"""
|
||||||
# CAUTION: adding imports to this file which are not in update_dependencies.py is not advised
|
# CAUTION: adding imports to this file which are not in update_dependencies.py is not advised
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
@@ -33,28 +33,30 @@ import pandas as pd
|
|||||||
import pdfkit
|
import pdfkit
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
|
|
||||||
# internal candela references included during intial phases, to be deleted at future date
|
# internal candela references included during intial phases, to be deleted at future date
|
||||||
# https://candelatech.atlassian.net/wiki/spaces/LANFORGE/pages/372703360/Scripting+Data+Collection+March+2021
|
# https://candelatech.atlassian.net/wiki/spaces/LANFORGE/pages/372703360/Scripting+Data+Collection+March+2021
|
||||||
# base report class
|
# base report class
|
||||||
class lf_report():
|
|
||||||
|
class lf_report:
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
#_path the report directory under which the report directories will be created.
|
# _path the report directory under which the report directories will be created.
|
||||||
_path = "/home/lanforge/html-reports",
|
_path="/home/lanforge/html-reports",
|
||||||
_alt_path = "",
|
_alt_path="",
|
||||||
_date = "",
|
_date="",
|
||||||
_title="LANForge Unit Test Run Heading",
|
_title="LANForge Unit Test Run Heading",
|
||||||
_table_title="LANForge Table Heading",
|
_table_title="LANForge Table Heading",
|
||||||
_graph_title="LANForge Graph Title",
|
_graph_title="LANForge Graph Title",
|
||||||
_obj = "",
|
_obj="",
|
||||||
_obj_title = "",
|
_obj_title="",
|
||||||
_output_html="outfile.html",
|
_output_html="outfile.html",
|
||||||
_output_pdf="outfile.pdf",
|
_output_pdf="outfile.pdf",
|
||||||
_results_dir_name = "LANforge_Test_Results_Unit_Test",
|
_results_dir_name="LANforge_Test_Results_Unit_Test",
|
||||||
_output_format = 'html', # pass in on the write functionality, current not used
|
_output_format='html', # pass in on the write functionality, current not used
|
||||||
_dataframe="",
|
_dataframe="",
|
||||||
_path_date_time="",
|
_path_date_time="",
|
||||||
_custom_css='custom-example.css'): # this is where the final report is placed.
|
_custom_css='custom-example.css'): # this is where the final report is placed.
|
||||||
#other report paths,
|
# other report paths,
|
||||||
|
|
||||||
# _path is where the directory with the data time will be created
|
# _path is where the directory with the data time will be created
|
||||||
if _path == "local" or _path == "here":
|
if _path == "local" or _path == "here":
|
||||||
@@ -67,29 +69,29 @@ class lf_report():
|
|||||||
self.path = _path
|
self.path = _path
|
||||||
print("path set: {}".format(self.path))
|
print("path set: {}".format(self.path))
|
||||||
|
|
||||||
self.dataframe=_dataframe
|
self.dataframe = _dataframe
|
||||||
self.text = ""
|
self.text = ""
|
||||||
self.title=_title
|
self.title = _title
|
||||||
self.table_title=_table_title
|
self.table_title = _table_title
|
||||||
self.graph_title=_graph_title
|
self.graph_title = _graph_title
|
||||||
self.date=_date
|
self.date = _date
|
||||||
self.output_html=_output_html
|
self.output_html = _output_html
|
||||||
self.path_date_time = _path_date_time
|
self.path_date_time = _path_date_time
|
||||||
self.write_output_html = ""
|
self.write_output_html = ""
|
||||||
self.write_output_index_html = ""
|
self.write_output_index_html = ""
|
||||||
self.output_pdf=_output_pdf
|
self.output_pdf = _output_pdf
|
||||||
self.write_output_pdf = ""
|
self.write_output_pdf = ""
|
||||||
self.banner_html = ""
|
self.banner_html = ""
|
||||||
self.footer_html = ""
|
self.footer_html = ""
|
||||||
self.graph_titles=""
|
self.graph_titles = ""
|
||||||
self.graph_image=""
|
self.graph_image = ""
|
||||||
self.csv_file_name=""
|
self.csv_file_name = ""
|
||||||
self.html = ""
|
self.html = ""
|
||||||
self.custom_html = ""
|
self.custom_html = ""
|
||||||
self.pdf_link_html = ""
|
self.pdf_link_html = ""
|
||||||
self.objective = _obj
|
self.objective = _obj
|
||||||
self.obj_title = _obj_title
|
self.obj_title = _obj_title
|
||||||
#self.systeminfopath = ""
|
# self.systeminfopath = ""
|
||||||
self.date_time_directory = ""
|
self.date_time_directory = ""
|
||||||
self.log_directory = ""
|
self.log_directory = ""
|
||||||
|
|
||||||
@@ -101,7 +103,7 @@ class lf_report():
|
|||||||
self.current_path = os.path.dirname(os.path.abspath(__file__))
|
self.current_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
self.custom_css = _custom_css
|
self.custom_css = _custom_css
|
||||||
# note: the following 3 calls must be in order
|
# note: the following 3 calls must be in order
|
||||||
self.set_date_time_directory(_date,_results_dir_name)
|
self.set_date_time_directory(_date, _results_dir_name)
|
||||||
self.build_date_time_directory()
|
self.build_date_time_directory()
|
||||||
self.build_log_directory()
|
self.build_log_directory()
|
||||||
|
|
||||||
@@ -113,65 +115,66 @@ class lf_report():
|
|||||||
self.copy_logo_footer()
|
self.copy_logo_footer()
|
||||||
|
|
||||||
def copy_banner(self):
|
def copy_banner(self):
|
||||||
banner_src_file = str(self.current_path)+'/'+str(self.banner_directory)+'/'+str(self.banner_file_name)
|
banner_src_file = str(self.current_path) + '/' + str(self.banner_directory) + '/' + str(self.banner_file_name)
|
||||||
banner_dst_file = str(self.path_date_time)+'/'+ str(self.banner_file_name)
|
banner_dst_file = str(self.path_date_time) + '/' + str(self.banner_file_name)
|
||||||
#print("banner src_file: {}".format(banner_src_file))
|
# print("banner src_file: {}".format(banner_src_file))
|
||||||
#print("dst_file: {}".format(banner_dst_file))
|
# print("dst_file: {}".format(banner_dst_file))
|
||||||
shutil.copy(banner_src_file, banner_dst_file)
|
shutil.copy(banner_src_file, banner_dst_file)
|
||||||
|
|
||||||
def copy_css(self):
|
def copy_css(self):
|
||||||
reportcss_src_file = str(self.current_path)+'/'+str(self.banner_directory)+'/report.css'
|
reportcss_src_file = str(self.current_path) + '/' + str(self.banner_directory) + '/report.css'
|
||||||
# print("copy_css: source file is: "+reportcss_src_file)
|
# print("copy_css: source file is: "+reportcss_src_file)
|
||||||
reportcss_dest_file = str(self.path_date_time)+'/report.css'
|
reportcss_dest_file = str(self.path_date_time) + '/report.css'
|
||||||
|
|
||||||
customcss_src_file = str(self.current_path)+'/'+str(self.banner_directory)+'/'+str(self.custom_css)
|
customcss_src_file = str(self.current_path) + '/' + str(self.banner_directory) + '/' + str(self.custom_css)
|
||||||
customcss_dest_file = str(self.path_date_time)+'/custom.css'
|
customcss_dest_file = str(self.path_date_time) + '/custom.css'
|
||||||
|
|
||||||
font_src_file = str(self.current_path)+'/'+str(self.banner_directory)+'/'+str(self.font_file)
|
font_src_file = str(self.current_path) + '/' + str(self.banner_directory) + '/' + str(self.font_file)
|
||||||
font_dest_file = str(self.path_date_time)+'/'+str(self.font_file)
|
font_dest_file = str(self.path_date_time) + '/' + str(self.font_file)
|
||||||
|
|
||||||
shutil.copy(reportcss_src_file, reportcss_dest_file)
|
shutil.copy(reportcss_src_file, reportcss_dest_file)
|
||||||
shutil.copy(customcss_src_file, customcss_dest_file)
|
shutil.copy(customcss_src_file, customcss_dest_file)
|
||||||
shutil.copy(font_src_file, font_dest_file)
|
shutil.copy(font_src_file, font_dest_file)
|
||||||
|
|
||||||
def copy_logo(self):
|
def copy_logo(self):
|
||||||
logo_src_file = str(self.current_path)+'/'+str(self.logo_directory)+'/'+str(self.logo_file_name)
|
logo_src_file = str(self.current_path) + '/' + str(self.logo_directory) + '/' + str(self.logo_file_name)
|
||||||
logo_dst_file = str(self.path_date_time)+'/'+ str(self.logo_file_name)
|
logo_dst_file = str(self.path_date_time) + '/' + str(self.logo_file_name)
|
||||||
#print("logo_src_file: {}".format(logo_src_file))
|
# print("logo_src_file: {}".format(logo_src_file))
|
||||||
#print("logo_dst_file: {}".format(logo_dst_file))
|
# print("logo_dst_file: {}".format(logo_dst_file))
|
||||||
shutil.copy(logo_src_file, logo_dst_file)
|
shutil.copy(logo_src_file, logo_dst_file)
|
||||||
|
|
||||||
def copy_logo_footer(self):
|
def copy_logo_footer(self):
|
||||||
logo_footer_src_file = str(self.current_path)+'/'+str(self.logo_directory)+'/'+str(self.logo_footer_file_name)
|
logo_footer_src_file = str(self.current_path) + '/' + str(self.logo_directory) + '/' + str(
|
||||||
logo_footer_dst_file = str(self.path_date_time)+'/'+ str(self.logo_footer_file_name)
|
self.logo_footer_file_name)
|
||||||
#print("logo_footer_src_file: {}".format(logo_footer_src_file))
|
logo_footer_dst_file = str(self.path_date_time) + '/' + str(self.logo_footer_file_name)
|
||||||
#print("logo_footer_dst_file: {}".format(logo_footer_dst_file))
|
# print("logo_footer_src_file: {}".format(logo_footer_src_file))
|
||||||
|
# print("logo_footer_dst_file: {}".format(logo_footer_dst_file))
|
||||||
shutil.copy(logo_footer_src_file, logo_footer_dst_file)
|
shutil.copy(logo_footer_src_file, logo_footer_dst_file)
|
||||||
|
|
||||||
def move_graph_image(self,):
|
def move_graph_image(self, ):
|
||||||
graph_src_file = str(self.graph_image)
|
graph_src_file = str(self.graph_image)
|
||||||
graph_dst_file = str(self.path_date_time)+'/'+ str(self.graph_image)
|
graph_dst_file = str(self.path_date_time) + '/' + str(self.graph_image)
|
||||||
print("graph_src_file: {}".format(graph_src_file))
|
print("graph_src_file: {}".format(graph_src_file))
|
||||||
print("graph_dst_file: {}".format(graph_dst_file))
|
print("graph_dst_file: {}".format(graph_dst_file))
|
||||||
shutil.move(graph_src_file, graph_dst_file)
|
shutil.move(graph_src_file, graph_dst_file)
|
||||||
|
|
||||||
def move_csv_file(self):
|
def move_csv_file(self):
|
||||||
csv_src_file = str(self.csv_file_name)
|
csv_src_file = str(self.csv_file_name)
|
||||||
csv_dst_file = str(self.path_date_time)+'/'+str(self.csv_file_name)
|
csv_dst_file = str(self.path_date_time) + '/' + str(self.csv_file_name)
|
||||||
print("csv_src_file: {}".format(csv_src_file))
|
print("csv_src_file: {}".format(csv_src_file))
|
||||||
print("csv_dst_file: {}".format(csv_dst_file))
|
print("csv_dst_file: {}".format(csv_dst_file))
|
||||||
shutil.move(csv_src_file, csv_dst_file)
|
shutil.move(csv_src_file, csv_dst_file)
|
||||||
|
|
||||||
def set_path(self,_path):
|
def set_path(self, _path):
|
||||||
self.path = _path
|
self.path = _path
|
||||||
|
|
||||||
def set_date_time_directory(self,_date,_results_dir_name):
|
def set_date_time_directory(self, _date, _results_dir_name):
|
||||||
self.date = _date
|
self.date = _date
|
||||||
self.results_dir_name = _results_dir_name
|
self.results_dir_name = _results_dir_name
|
||||||
if self.date != "":
|
if self.date != "":
|
||||||
self.date_time_directory = str(self.date) + str("_") + str(self.results_dir_name)
|
self.date_time_directory = str(self.date) + str("_") + str(self.results_dir_name)
|
||||||
else:
|
else:
|
||||||
self.date = str(datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")).replace(':','-')
|
self.date = str(datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")).replace(':', '-')
|
||||||
self.date_time_directory = self.date + str("_") + str(self.results_dir_name)
|
self.date_time_directory = self.date + str("_") + str(self.results_dir_name)
|
||||||
|
|
||||||
def build_date_time_directory(self):
|
def build_date_time_directory(self):
|
||||||
@@ -189,8 +192,8 @@ class lf_report():
|
|||||||
print("report path : {}".format(self.path_date_time))
|
print("report path : {}".format(self.path_date_time))
|
||||||
|
|
||||||
def build_log_directory(self):
|
def build_log_directory(self):
|
||||||
if self.log_directory =="":
|
if self.log_directory == "":
|
||||||
self.log_directory = os.path.join(self.path_date_time,"log")
|
self.log_directory = os.path.join(self.path_date_time, "log")
|
||||||
try:
|
try:
|
||||||
if not os.path.exists(self.log_directory):
|
if not os.path.exists(self.log_directory):
|
||||||
os.mkdir(self.log_directory)
|
os.mkdir(self.log_directory)
|
||||||
@@ -198,16 +201,16 @@ class lf_report():
|
|||||||
print("exception making {}".format(self.log_directory))
|
print("exception making {}".format(self.log_directory))
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
def set_text(self,_text):
|
def set_text(self, _text):
|
||||||
self.text = _text
|
self.text = _text
|
||||||
|
|
||||||
def set_title(self,_title):
|
def set_title(self, _title):
|
||||||
self.title = _title
|
self.title = _title
|
||||||
|
|
||||||
def set_table_title(self,_table_title):
|
def set_table_title(self, _table_title):
|
||||||
self.table_title = _table_title
|
self.table_title = _table_title
|
||||||
|
|
||||||
def set_graph_title(self,_graph_title):
|
def set_graph_title(self, _graph_title):
|
||||||
self.graph_title = _graph_title
|
self.graph_title = _graph_title
|
||||||
|
|
||||||
# sets the csv file name as graph title
|
# sets the csv file name as graph title
|
||||||
@@ -216,23 +219,23 @@ class lf_report():
|
|||||||
self.csv_file_name = fname + ".csv"
|
self.csv_file_name = fname + ".csv"
|
||||||
|
|
||||||
# The _date is set when class is enstanciated / created so this set_date should be used with caution, used to synchronize results
|
# The _date is set when class is enstanciated / created so this set_date should be used with caution, used to synchronize results
|
||||||
def set_date(self,_date):
|
def set_date(self, _date):
|
||||||
self.date = _date
|
self.date = _date
|
||||||
|
|
||||||
def set_table_dataframe(self,_dataframe):
|
def set_table_dataframe(self, _dataframe):
|
||||||
self.dataframe = _dataframe
|
self.dataframe = _dataframe
|
||||||
|
|
||||||
def set_table_dataframe_from_csv(self,_csv):
|
def set_table_dataframe_from_csv(self, _csv):
|
||||||
self.dataframe = pd.read_csv(_csv)
|
self.dataframe = pd.read_csv(_csv)
|
||||||
|
|
||||||
def set_custom_html(self,_custom_html):
|
def set_custom_html(self, _custom_html):
|
||||||
self.custom_html = _custom_html
|
self.custom_html = _custom_html
|
||||||
|
|
||||||
def set_obj_html(self,_obj_title, _obj ):
|
def set_obj_html(self, _obj_title, _obj):
|
||||||
self.objective = _obj
|
self.objective = _obj
|
||||||
self.obj_title = _obj_title
|
self.obj_title = _obj_title
|
||||||
|
|
||||||
def set_graph_image(self,_graph_image):
|
def set_graph_image(self, _graph_image):
|
||||||
self.graph_image = _graph_image
|
self.graph_image = _graph_image
|
||||||
|
|
||||||
def get_date(self):
|
def get_date(self):
|
||||||
@@ -256,12 +259,12 @@ class lf_report():
|
|||||||
return self.log_directory
|
return self.log_directory
|
||||||
|
|
||||||
def file_add_path(self, file):
|
def file_add_path(self, file):
|
||||||
output_file = str(self.path_date_time)+'/'+ str(file)
|
output_file = str(self.path_date_time) + '/' + str(file)
|
||||||
print("output file {}".format(output_file))
|
print("output file {}".format(output_file))
|
||||||
return output_file
|
return output_file
|
||||||
|
|
||||||
def write_html(self):
|
def write_html(self):
|
||||||
self.write_output_html = str(self.path_date_time)+'/'+ str(self.output_html)
|
self.write_output_html = str(self.path_date_time) + '/' + str(self.output_html)
|
||||||
print("write_output_html: {}".format(self.write_output_html))
|
print("write_output_html: {}".format(self.write_output_html))
|
||||||
try:
|
try:
|
||||||
test_file = open(self.write_output_html, "w")
|
test_file = open(self.write_output_html, "w")
|
||||||
@@ -272,7 +275,7 @@ class lf_report():
|
|||||||
return self.write_output_html
|
return self.write_output_html
|
||||||
|
|
||||||
def write_index_html(self):
|
def write_index_html(self):
|
||||||
self.write_output_index_html = str(self.path_date_time)+'/'+ str("index.html")
|
self.write_output_index_html = str(self.path_date_time) + '/' + str("index.html")
|
||||||
print("write_output_index_html: {}".format(self.write_output_index_html))
|
print("write_output_index_html: {}".format(self.write_output_index_html))
|
||||||
try:
|
try:
|
||||||
test_file = open(self.write_output_index_html, "w")
|
test_file = open(self.write_output_index_html, "w")
|
||||||
@@ -282,9 +285,8 @@ class lf_report():
|
|||||||
print("write_index_html failed")
|
print("write_index_html failed")
|
||||||
return self.write_output_index_html
|
return self.write_output_index_html
|
||||||
|
|
||||||
|
|
||||||
def write_html_with_timestamp(self):
|
def write_html_with_timestamp(self):
|
||||||
self.write_output_html = "{}/{}-{}".format(self.path_date_time,self.date,self.output_html)
|
self.write_output_html = "{}/{}-{}".format(self.path_date_time, self.date, self.output_html)
|
||||||
print("write_output_html: {}".format(self.write_output_html))
|
print("write_output_html: {}".format(self.write_output_html))
|
||||||
try:
|
try:
|
||||||
test_file = open(self.write_output_html, "w")
|
test_file = open(self.write_output_html, "w")
|
||||||
@@ -294,53 +296,52 @@ class lf_report():
|
|||||||
print("write_html failed")
|
print("write_html failed")
|
||||||
return self.write_output_html
|
return self.write_output_html
|
||||||
|
|
||||||
|
|
||||||
# https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
|
# https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
|
||||||
# page_size A4, A3, Letter, Legal
|
# page_size A4, A3, Letter, Legal
|
||||||
# orientation Portrait , Landscape
|
# orientation Portrait , Landscape
|
||||||
def write_pdf(self, _page_size = 'A4', _orientation = 'Portrait'):
|
def write_pdf(self, _page_size='A4', _orientation='Portrait'):
|
||||||
# write logic to generate pdf here
|
# write logic to generate pdf here
|
||||||
# wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
|
# wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||||
# sudo apt install ./wkhtmltox_0.12.6-1.focal_amd64.deb
|
# sudo apt install ./wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||||
|
|
||||||
options = {"enable-local-file-access" : None,
|
options = {"enable-local-file-access": None,
|
||||||
'orientation': _orientation,
|
'orientation': _orientation,
|
||||||
'page-size': _page_size} # prevent error Blocked access to file
|
'page-size': _page_size} # prevent error Blocked access to file
|
||||||
self.write_output_pdf = str(self.path_date_time)+'/'+ str(self.output_pdf)
|
self.write_output_pdf = str(self.path_date_time) + '/' + str(self.output_pdf)
|
||||||
pdfkit.from_file(self.write_output_html, self.write_output_pdf, options=options)
|
pdfkit.from_file(self.write_output_html, self.write_output_pdf, options=options)
|
||||||
|
|
||||||
# https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
|
# https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
|
||||||
# page_size A4, A3, Letter, Legal
|
# page_size A4, A3, Letter, Legal
|
||||||
# orientation Portrait , Landscape
|
# orientation Portrait , Landscape
|
||||||
def write_pdf_with_timestamp(self, _page_size = 'A4', _orientation = 'Portrait'):
|
def write_pdf_with_timestamp(self, _page_size='A4', _orientation='Portrait'):
|
||||||
# write logic to generate pdf here
|
# write logic to generate pdf here
|
||||||
# wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
|
# wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||||
# sudo apt install ./wkhtmltox_0.12.6-1.focal_amd64.deb
|
# sudo apt install ./wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||||
|
|
||||||
options = {"enable-local-file-access" : None,
|
options = {"enable-local-file-access": None,
|
||||||
'orientation': _orientation,
|
'orientation': _orientation,
|
||||||
'page-size': _page_size} # prevent error Blocked access to file
|
'page-size': _page_size} # prevent error Blocked access to file
|
||||||
self.write_output_pdf = "{}/{}-{}".format(self.path_date_time,self.date,self.output_pdf)
|
self.write_output_pdf = "{}/{}-{}".format(self.path_date_time, self.date, self.output_pdf)
|
||||||
pdfkit.from_file(self.write_output_html, self.write_output_pdf, options=options)
|
pdfkit.from_file(self.write_output_html, self.write_output_pdf, options=options)
|
||||||
|
|
||||||
def get_pdf_path(self):
|
def get_pdf_path(self):
|
||||||
pdf_link_path = "{}/{}-{}".format(self.path_date_time, self.date, self.output_pdf)
|
pdf_link_path = "{}/{}-{}".format(self.path_date_time, self.date, self.output_pdf)
|
||||||
return pdf_link_path
|
return pdf_link_path
|
||||||
|
|
||||||
def build_pdf_link(self,_pdf_link_name,_pdf_link_path):
|
def build_pdf_link(self, _pdf_link_name, _pdf_link_path):
|
||||||
self.pdf_link_html = """
|
self.pdf_link_html = """
|
||||||
<!-- pdf link -->
|
<!-- pdf link -->
|
||||||
<a href="{pdf_link_path}" target="_blank">{pdf_link_name}</a>
|
<a href="{pdf_link_path}" target="_blank">{pdf_link_name}</a>
|
||||||
<br>
|
<br>
|
||||||
""".format(pdf_link_path=_pdf_link_path,pdf_link_name=_pdf_link_name)
|
""".format(pdf_link_path=_pdf_link_path, pdf_link_name=_pdf_link_name)
|
||||||
self.html += self.pdf_link_html
|
self.html += self.pdf_link_html
|
||||||
|
|
||||||
def build_link(self,_link_name,_link_path):
|
def build_link(self, _link_name, _link_path):
|
||||||
self.link = """
|
self.link = """
|
||||||
<!-- link -->
|
<!-- link -->
|
||||||
<a href="{link_path}" target="_blank">{link_name}</a>
|
<a href="{link_path}" target="_blank">{link_name}</a>
|
||||||
<br>
|
<br>
|
||||||
""".format(link_path=_link_path,link_name=_link_name)
|
""".format(link_path=_link_path, link_name=_link_name)
|
||||||
self.html += self.link
|
self.html += self.link
|
||||||
|
|
||||||
def generate_report(self):
|
def generate_report(self):
|
||||||
@@ -419,7 +420,6 @@ class lf_report():
|
|||||||
)
|
)
|
||||||
self.html += self.banner_html
|
self.html += self.banner_html
|
||||||
|
|
||||||
|
|
||||||
def build_table_title(self):
|
def build_table_title(self):
|
||||||
self.table_title_html = """
|
self.table_title_html = """
|
||||||
<!-- Table Title-->
|
<!-- Table Title-->
|
||||||
@@ -442,23 +442,24 @@ class lf_report():
|
|||||||
self.html += self.text_html
|
self.html += self.text_html
|
||||||
|
|
||||||
def build_date_time(self):
|
def build_date_time(self):
|
||||||
self.date_time = str(datetime.datetime.now().strftime("%Y-%m-%d-%H-h-%m-m-%S-s")).replace(':','-')
|
self.date_time = str(datetime.datetime.now().strftime("%Y-%m-%d-%H-h-%m-m-%S-s")).replace(':', '-')
|
||||||
return self.date_time
|
return self.date_time
|
||||||
|
|
||||||
def build_path_date_time(self):
|
def build_path_date_time(self):
|
||||||
try:
|
try:
|
||||||
self.path_date_time = os.path.join(self.path,self.date_time)
|
self.path_date_time = os.path.join(self.path, self.date_time)
|
||||||
os.mkdir(self.path_date_time)
|
os.mkdir(self.path_date_time)
|
||||||
except:
|
except:
|
||||||
curr_dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
curr_dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
self.path_date_time = os.path.join(curr_dir_path,self.date_time)
|
self.path_date_time = os.path.join(curr_dir_path, self.date_time)
|
||||||
os.mkdir(self.path_date_time)
|
os.mkdir(self.path_date_time)
|
||||||
|
|
||||||
def build_table(self):
|
def build_table(self):
|
||||||
self.dataframe_html = self.dataframe.to_html(index=False, justify='center') # have the index be able to be passed in.
|
self.dataframe_html = self.dataframe.to_html(index=False,
|
||||||
|
justify='center') # have the index be able to be passed in.
|
||||||
self.html += self.dataframe_html
|
self.html += self.dataframe_html
|
||||||
|
|
||||||
def test_setup_table(self,test_setup_data, value):
|
def test_setup_table(self, test_setup_data, value):
|
||||||
if test_setup_data is None:
|
if test_setup_data is None:
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
@@ -471,7 +472,7 @@ class lf_report():
|
|||||||
<table width='700px' border='1' cellpadding='2' cellspacing='0' style='border-top-color: gray; border-top-style: solid; border-top-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px'>
|
<table width='700px' border='1' cellpadding='2' cellspacing='0' style='border-top-color: gray; border-top-style: solid; border-top-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px'>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>"""+ str(value) + """</td>
|
<td>""" + str(value) + """</td>
|
||||||
<td>
|
<td>
|
||||||
<table width='100%' border='0' cellpadding='2' cellspacing='0' style='border-top-color: gray; border-top-style: solid; border-top-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px'>
|
<table width='100%' border='0' cellpadding='2' cellspacing='0' style='border-top-color: gray; border-top-style: solid; border-top-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px'>
|
||||||
""" + var + """
|
""" + var + """
|
||||||
@@ -571,6 +572,7 @@ function copyTextToClipboard(ele) {
|
|||||||
def end_content_div(self):
|
def end_content_div(self):
|
||||||
self.html += "\n</div><!-- end contentDiv -->\n"
|
self.html += "\n</div><!-- end contentDiv -->\n"
|
||||||
|
|
||||||
|
|
||||||
# Unit Test
|
# Unit Test
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
@@ -583,22 +585,22 @@ if __name__ == "__main__":
|
|||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
print("LANforge manager {lfmgr}".format(lfmgr=args.lfmgr))
|
print("LANforge manager {lfmgr}".format(lfmgr=args.lfmgr))
|
||||||
|
|
||||||
|
|
||||||
# Testing: generate data frame
|
# Testing: generate data frame
|
||||||
dataframe = pd.DataFrame({
|
dataframe = pd.DataFrame({
|
||||||
'product':['CT521a-264-1ac-1n','CT521a-1ac-1ax','CT522-264-1ac2-1n','CT523c-2ac2-db-10g-cu','CT523c-3ac2-db-10g-cu','CT523c-8ax-ac10g-cu','CT523c-192-2ac2-1ac-10g'],
|
'product': ['CT521a-264-1ac-1n', 'CT521a-1ac-1ax', 'CT522-264-1ac2-1n', 'CT523c-2ac2-db-10g-cu',
|
||||||
'radios':[1,1,2,2,6,9,3],
|
'CT523c-3ac2-db-10g-cu', 'CT523c-8ax-ac10g-cu', 'CT523c-192-2ac2-1ac-10g'],
|
||||||
'MIMO':['N','N','N','Y','Y','Y','Y'],
|
'radios': [1, 1, 2, 2, 6, 9, 3],
|
||||||
'stations':[200,64,200,128,384,72,192],
|
'MIMO': ['N', 'N', 'N', 'Y', 'Y', 'Y', 'Y'],
|
||||||
'mbps':[300,300,300,10000,10000,10000,10000]
|
'stations': [200, 64, 200, 128, 384, 72, 192],
|
||||||
|
'mbps': [300, 300, 300, 10000, 10000, 10000, 10000]
|
||||||
})
|
})
|
||||||
|
|
||||||
print(dataframe)
|
print(dataframe)
|
||||||
|
|
||||||
# Testing: generate data frame
|
# Testing: generate data frame
|
||||||
dataframe2 = pd.DataFrame({
|
dataframe2 = pd.DataFrame({
|
||||||
'station':[1,2,3,4,5,6,7],
|
'station': [1, 2, 3, 4, 5, 6, 7],
|
||||||
'time_seconds':[23,78,22,19,45,22,25]
|
'time_seconds': [23, 78, 22, 19, 45, 22, 25]
|
||||||
})
|
})
|
||||||
|
|
||||||
report = lf_report()
|
report = lf_report()
|
||||||
@@ -617,8 +619,8 @@ if __name__ == "__main__":
|
|||||||
report.set_table_dataframe(dataframe2)
|
report.set_table_dataframe(dataframe2)
|
||||||
report.build_table()
|
report.build_table()
|
||||||
|
|
||||||
#report.build_all()
|
# report.build_all()
|
||||||
#report.build_footer()
|
# report.build_footer()
|
||||||
report.build_footer_no_png()
|
report.build_footer_no_png()
|
||||||
|
|
||||||
html_file = report.write_html()
|
html_file = report.write_html()
|
||||||
@@ -627,4 +629,3 @@ if __name__ == "__main__":
|
|||||||
report.write_pdf()
|
report.write_pdf()
|
||||||
|
|
||||||
print("report path {}".format(report.get_path()))
|
print("report path {}".format(report.get_path()))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user