From e3562a8ea61dd285c0f7b0c76c2f635c2a97ba3d Mon Sep 17 00:00:00 2001 From: Elliot DeMatteis Date: Thu, 13 Aug 2020 11:30:12 -0700 Subject: [PATCH 1/3] upload new version to pypi. Added sample --- samples/export_to_excel.py | 36 ++++++++++++++++++++++++ samples/export_to_excel_requirements.txt | 2 ++ setup.py | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 samples/export_to_excel.py create mode 100644 samples/export_to_excel_requirements.txt diff --git a/samples/export_to_excel.py b/samples/export_to_excel.py new file mode 100644 index 0000000..3b8e71a --- /dev/null +++ b/samples/export_to_excel.py @@ -0,0 +1,36 @@ +import argparse +try: + from ssp import SSP + from openpyxl import Workbook +except: + print("Please install the requirements from export_to_excel_requirements.txt") + +def main(ssp_path, out_file): + + ssp = SSP(ssp_path) + + workbook = Workbook() + worksheet = workbook.active + + ssp_columns = ["Control Number", "Responsible Role", "Implementation Status", "Control Origination", "Implementation"] + + worksheet.insert_cols(0, len(ssp_columns)) + worksheet.append(ssp_columns) + + for control in ssp: + for part in control: + try: + row = [control.number, control.responsible_role, ", ".join(control.implementation_status), ", ".join(control.control_origination), control.part(part).text] + worksheet.append(row) + except Exception as e: + print(str(e)) + + workbook.save(out_file) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--ssp', help='Path to SSP', required=True) + parser.add_argument('--out', help='Path to SSP', required=True) + args = parser.parse_args() + + main(args.ssp, args.out) \ No newline at end of file diff --git a/samples/export_to_excel_requirements.txt b/samples/export_to_excel_requirements.txt new file mode 100644 index 0000000..39f0157 --- /dev/null +++ b/samples/export_to_excel_requirements.txt @@ -0,0 +1,2 @@ +python-ssp +openpyxl \ No newline at end of file diff --git a/setup.py b/setup.py index f8f3f23..8c7ef59 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ def text_of(relpath): return text NAME = 'python-ssp' -VERSION = '0.1.0' +VERSION = '0.1.1' DESCRIPTION = 'Library for interfacing with FedRAMP system security plan templates.' KEYWORDS = 'fedramp ssp word' AUTHOR = 'Elliot DeMatteis' From 0f956343075289e4031d1b5069d32dc2a58141f0 Mon Sep 17 00:00:00 2001 From: Elliot DeMatteis Date: Thu, 13 Aug 2020 11:30:12 -0700 Subject: [PATCH 2/3] upload new version to pypi. Added sample --- samples/export_to_excel.py | 36 ++++++++++++++++++++++++ samples/export_to_excel_requirements.txt | 2 ++ setup.py | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 samples/export_to_excel.py create mode 100644 samples/export_to_excel_requirements.txt diff --git a/samples/export_to_excel.py b/samples/export_to_excel.py new file mode 100644 index 0000000..3b8e71a --- /dev/null +++ b/samples/export_to_excel.py @@ -0,0 +1,36 @@ +import argparse +try: + from ssp import SSP + from openpyxl import Workbook +except: + print("Please install the requirements from export_to_excel_requirements.txt") + +def main(ssp_path, out_file): + + ssp = SSP(ssp_path) + + workbook = Workbook() + worksheet = workbook.active + + ssp_columns = ["Control Number", "Responsible Role", "Implementation Status", "Control Origination", "Implementation"] + + worksheet.insert_cols(0, len(ssp_columns)) + worksheet.append(ssp_columns) + + for control in ssp: + for part in control: + try: + row = [control.number, control.responsible_role, ", ".join(control.implementation_status), ", ".join(control.control_origination), control.part(part).text] + worksheet.append(row) + except Exception as e: + print(str(e)) + + workbook.save(out_file) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--ssp', help='Path to SSP', required=True) + parser.add_argument('--out', help='Path to SSP', required=True) + args = parser.parse_args() + + main(args.ssp, args.out) \ No newline at end of file diff --git a/samples/export_to_excel_requirements.txt b/samples/export_to_excel_requirements.txt new file mode 100644 index 0000000..39f0157 --- /dev/null +++ b/samples/export_to_excel_requirements.txt @@ -0,0 +1,2 @@ +python-ssp +openpyxl \ No newline at end of file diff --git a/setup.py b/setup.py index f8f3f23..8c7ef59 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ def text_of(relpath): return text NAME = 'python-ssp' -VERSION = '0.1.0' +VERSION = '0.1.1' DESCRIPTION = 'Library for interfacing with FedRAMP system security plan templates.' KEYWORDS = 'fedramp ssp word' AUTHOR = 'Elliot DeMatteis' From ab92e20804307ed118884472cb65c8eadc195f87 Mon Sep 17 00:00:00 2001 From: Elliot DeMatteis Date: Sat, 15 Aug 2020 00:52:28 -0700 Subject: [PATCH 3/3] add part number to sample --- samples/export_to_excel.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/samples/export_to_excel.py b/samples/export_to_excel.py index 3b8e71a..10e539e 100644 --- a/samples/export_to_excel.py +++ b/samples/export_to_excel.py @@ -20,7 +20,10 @@ def main(ssp_path, out_file): for control in ssp: for part in control: try: - row = [control.number, control.responsible_role, ", ".join(control.implementation_status), ", ".join(control.control_origination), control.part(part).text] + if part is not None: + row = ["{} ({})".format(control.number, part), control.responsible_role, ", ".join(control.implementation_status), ", ".join(control.control_origination), control.part(part).text] + else: + row = [control.number, control.responsible_role, ", ".join(control.implementation_status), ", ".join(control.control_origination), control.part(part).text] worksheet.append(row) except Exception as e: print(str(e))