From 400423f4467639846cb237cf1ff451345d26d4a3 Mon Sep 17 00:00:00 2001 From: Michele Carignani <michele.carignani@etsi.org> Date: Thu, 7 Mar 2019 10:18:10 +0100 Subject: [PATCH] main renamed --- main.py | 182 -------------------------------------------------------- 1 file changed, 182 deletions(-) delete mode 100755 main.py diff --git a/main.py b/main.py deleted file mode 100755 index a7f437f..0000000 --- a/main.py +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/python2.7 -''' -Parses a TOSCA template and generates a docx file -''' - - -import sys -import toscaparser.utils.yamlparser as yaml - -import docx -from docx.enum.text import WD_PARAGRAPH_ALIGNMENT - -TEMPLATES = {} - -FNS = { - 'VNFD' : 'etsi_nfv_sol001_vnfd_2_5_1_types.yaml', - 'NSD' : 'etsi_nfv_sol001_nsd_2_5_1_types.yaml', - 'PNFD' : 'etsi_nfv_sol001_pnfd_2_5_1_types.yaml' -} - -TOSCA_TYPES = [ - 'data_types', - 'artifact_types', - 'capability_types', - 'requirements_types', - 'relationship_types', - 'interface_types', - 'node_types', - 'group_types', - 'policy_types' -] - -TOSCA_TYPES_PRETTYPRINT = { - 'data_types': 'Data Types', - 'artifact_types': 'Artifact Types', - 'capability_types': 'Capability Types', - 'requirements_types': 'Requirements types', - 'relationship_types': 'Relationship Types', - 'interface_types': 'Interface Types', - 'node_types': 'Node Types', - 'group_types': 'Group Types', - 'policy_types': 'Policy Types' -} - - -IDS = [6, 2, 1, 1] - -doc = docx.Document() - -def load_template(file_path, templs, key): - ''' - Loads the content of the file at file_patch into the YAML templates array - ''' - yaml_data = open(file_path).read() - templs[key] = yaml.simple_ordered_parse(yaml_data) - -def print_lvl(num, txt): - index = ".".join(map(str, IDS[:(num+1)])) - print index + " " + ('-'*(num+1)) + ' ' + txt - -def add_heading_with_num(num, txt): - ''' - Add a new heading to the document, with the calculated index number - ''' - index = ".".join(map(str, IDS[:(num+1)])) - doc.add_heading(index + " " + txt, num) - -def cell_text_bold(cell): - cell.paragraphs[0].runs[0].font.bold = True - -def cell_text_centered(cell): - cell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER - -def mk_props_table_hdr(table): - hdr_cells = table.rows[0].cells - hdr_cells[0].text = 'Name' - hdr_cells[1].text = 'Required' - hdr_cells[2].text = 'Type' - hdr_cells[3].text = 'Constraints' - hdr_cells[4].text = 'Description' - map(cell_text_bold, hdr_cells) - map(cell_text_centered, hdr_cells) - -def dt_name_from_path(dt_path): - return dt_path.split('.')[-1] - -def prop_field_to_str(prop_field): - if type(prop_field) == bool: - return 'yes' if prop_field else 'no' - return str(prop_field) - -def add_prop_row(prop_name, prop_fields, table): - ''' - Add a row to table and fills it with info from prop - ''' - nrow = table.add_row() - prop_cells = nrow.cells - prop_cells[0].text = prop_name - - all_fields = ['required', 'type', 'constraints', 'description'] - - counter = 1 - for field in all_fields: - if field in prop_fields: - prop_cells[counter].text = prop_field_to_str(prop_fields[field]) - counter = counter + 1 - -def print_all_types(templ, lvl): - for tosca_type in TOSCA_TYPES: - if not tosca_type in templ: - continue - print_lvl(lvl, tosca_type) - add_heading_with_num(lvl, TOSCA_TYPES_PRETTYPRINT[tosca_type]) - for data_type in templ[tosca_type]: - print_lvl(lvl + 1, data_type) - add_heading_with_num(lvl + 1, data_type) - - if 'description' in templ[tosca_type][data_type]: - print_lvl(lvl + 2, 'Description') - add_heading_with_num(lvl + 2, 'Description') - doc.add_paragraph(templ[tosca_type][data_type]['description']) - IDS[lvl+2] = IDS[lvl+2] + 1 - - if 'properties' in templ[tosca_type][data_type]: - print_lvl(lvl + 2, 'Properties') - add_heading_with_num(lvl + 2, 'Properties') - # num_row = templ[tosca_type][data_type]['properties'].items() - doc.add_paragraph("The properties of the "+ - dt_name_from_path(data_type) - +" data type shall comply with the provisions set out in table REF_TBD.") - table = doc.add_table(rows=1, cols=5) - mk_props_table_hdr(table) - for prop in templ[tosca_type][data_type]['properties']: - # print "PROP: " + prop + ", VAL: " + str(templ[tosca_type][data_type]['properties'][prop]) - add_prop_row(prop, templ[tosca_type][data_type]['properties'][prop], table) - IDS[lvl+2] = IDS[lvl+2] + 1 - - print_lvl(lvl + 2, 'Definition') - add_heading_with_num(lvl + 2, 'Definition') - doc.add_paragraph("The syntax of the "+ - dt_name_from_path(data_type)+ - " data type shall comply with the following definition:") - def_table = doc.add_table(rows=1, cols=1) - def_table.rows[0].cells[0].text = 'TBD' - IDS[lvl+2] = IDS[lvl+2] + 1 - - print_lvl(lvl + 2, 'Examples') - add_heading_with_num(lvl + 2, 'Examples') - def_table = doc.add_table(rows=1, cols=1) - def_table.rows[0].cells[0].text = 'TBD' - IDS[lvl+2] = IDS[lvl+2] + 1 - - print_lvl(lvl + 2, 'Additional Requirements') - add_heading_with_num(lvl + 2, 'Additional Requirements') - doc.add_paragraph("None.") - IDS[lvl+2] = IDS[lvl+2] + 1 - - IDS[lvl+1] = IDS[lvl+1] + 1 - IDS[lvl+2] = 1 - - IDS[lvl+1] = 1 - IDS[lvl] = IDS[lvl] + 1 - IDS[lvl] = 2 - -FOLDR = sys.argv[1] - -if __name__ == "__main__": - - if len(sys.argv) < 2: - print "Usage: robot2doc <robot_file_or_dir> [<out_file> [spec_section_title]]" - - - print "Using folder: " + sys.argv[1] - - for fn in ['VNFD', 'NSD', 'PNFD']: - load_template(FOLDR + '/' + FNS[fn], TEMPLATES, fn) - print_lvl(0, fn) - add_heading_with_num(0, fn) - print_all_types(TEMPLATES[fn], 1) - IDS[0] = IDS[0] + 1 - - doc.save('sol001.docx') -- GitLab