From c00230a998e260e522307966f20347b81288f451 Mon Sep 17 00:00:00 2001 From: Brian Read Date: Fri, 15 Nov 2024 17:23:49 +0000 Subject: [PATCH] Finally got Table column names in comment for table control custom procedure --- Targets/Letsencrypt/Letsencrypt-Custom.pm | 175 +++++++++++++++++++--- Targets/Letsencrypt/_lets_LIST.html.ep | 56 +++---- Targets/Letsencrypt/letsencrypt_en.lex | 87 ++++++----- Templates/custom.pm.tem | 47 ++++-- Templates/html_controls.html.ep.xml | 10 ++ json5/Letsencrypt.json5 | 4 +- sm2gen.py | 45 ++++-- 7 files changed, 308 insertions(+), 116 deletions(-) diff --git a/Targets/Letsencrypt/Letsencrypt-Custom.pm b/Targets/Letsencrypt/Letsencrypt-Custom.pm index fd25a08..c72e0c4 100644 --- a/Targets/Letsencrypt/Letsencrypt-Custom.pm +++ b/Targets/Letsencrypt/Letsencrypt-Custom.pm @@ -1,8 +1,8 @@ # -# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-04 16:03:10 +# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-14 11:31:47 # # -# Routines to be edited by the developer to provide validation for parameters +# Routines to be edited by the developer to provide content and validation for parameters # and provison of the control data for table(s) # use esmith::util; @@ -12,7 +12,9 @@ use esmith::AccountsDB; use esmith::NetworksDB; use esmith::DomainsDB; -#use Net::SSLeay; +use constant FALSE => 0; +use constant TRUE => 1; + #The most common ones our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db"); @@ -26,28 +28,104 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); sub validate_LIST { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + # Validation for each field + my $ret = ""; + + if (! TRUE) #validate $c->param('InternalIP') + {$ret .= 'Validation for InternalIP failed';} + + if (! TRUE) #validate $c->param('ExternalIP') + {$ret .= 'Validation for ExternalIP failed';} + + if (! TRUE) #validate $c->param('InternetIP') + {$ret .= 'Validation for InternetIP failed';} + + if (! TRUE) #validate $c->param('Issuer') + {$ret .= 'Validation for Issuer failed';} + + if (! TRUE) #validate $c->param('Expiry') + {$ret .= 'Validation for Expiry failed';} + + if (! TRUE) #validate $c->param('NotBefore') + {$ret .= 'Validation for NotBefore failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } sub validate_PARAMS { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + # Validation for each field + my $ret = ""; + + if (! TRUE) #validate $c->param('status') + {$ret .= 'Validation for status failed';} + + if (! TRUE) #validate $c->param('hookScript') + {$ret .= 'Validation for hookScript failed';} + + if (! TRUE) #validate $c->param('hostOverride') + {$ret .= 'Validation for hostOverride failed';} + + if (! TRUE) #validate $c->param('ACCEPT_TERMS') + {$ret .= 'Validation for ACCEPT_TERMS failed';} + + if (! TRUE) #validate $c->param('API') + {$ret .= 'Validation for API failed';} + + if (! TRUE) #validate $c->param('keysize') + {$ret .= 'Validation for keysize failed';} + + if (! TRUE) #validate $c->param('configure') + {$ret .= 'Validation for configure failed';} + + if (! TRUE) #validate $c->param('Email') + {$ret .= 'Validation for Email failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } sub validate_CHECKALLDOMAINS { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + # Validation for each field + my $ret = ""; + + if (! TRUE) #validate $c->param('AllDomainsCheck') + {$ret .= 'Validation for AllDomainsCheck failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } sub validate_CHECKALLENABLEDDOMAINS { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + # Validation for each field + my $ret = ""; + + if (! TRUE) #validate $c->param('EnabledDomainsCheck') + {$ret .= 'Validation for EnabledDomainsCheck failed';} + + if ($ret eq "") {$ret = 'ok';} + return $ret; + } + + sub validate_CHECKONEDOMAIN { + my $c = shift; + my $prefix_data = shift; #Data hash as parameter + # Validation for each field + my $ret = ""; + + if (! TRUE) #validate $c->param('OneDomainToCheck') + {$ret .= 'Validation for OneDomainToCheck failed';} + + if (! TRUE) #validate $c->param('OneDomainsCheck') + {$ret .= 'Validation for OneDomainsCheck failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } @@ -122,7 +200,7 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); } - sub get_data_for_panel_CHECKONEDDOMAINS { + sub get_data_for_panel_CHECKONEDOMAIN { # Return a hash with the fields required which will be loaded into the shared data my $c = shift; my %ret = ( @@ -139,7 +217,6 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); } - # Get control data for table(s) @@ -237,7 +314,7 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); return $ret; } - sub get_selected_CHECKONEDDOMAINS { + sub get_selected_CHECKONEDOMAIN { my $c = shift; my $selected = shift; #Parameter is name of selected row. my $is_new_record = shift; #Indicates new record required (defaults) @@ -251,42 +328,106 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); sub perform_LIST { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + my $ret = ""; + + if (! TRUE) #copy or perform with value: InternalIP e.g. $c->setprop(dbentry,dbkey,$c->param('InternalIP') + {$ret .= 'Perform failed for InternalIP failed';} + + if (! TRUE) #copy or perform with value: ExternalIP e.g. $c->setprop(dbentry,dbkey,$c->param('ExternalIP') + {$ret .= 'Perform failed for ExternalIP failed';} + + if (! TRUE) #copy or perform with value: InternetIP e.g. $c->setprop(dbentry,dbkey,$c->param('InternetIP') + {$ret .= 'Perform failed for InternetIP failed';} + + if (! TRUE) #copy or perform with value: Issuer e.g. $c->setprop(dbentry,dbkey,$c->param('Issuer') + {$ret .= 'Perform failed for Issuer failed';} + + if (! TRUE) #copy or perform with value: Expiry e.g. $c->setprop(dbentry,dbkey,$c->param('Expiry') + {$ret .= 'Perform failed for Expiry failed';} + + if (! TRUE) #copy or perform with value: NotBefore e.g. $c->setprop(dbentry,dbkey,$c->param('NotBefore') + {$ret .= 'Perform failed for NotBefore failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } sub perform_PARAMS { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + my $ret = ""; + + if (! TRUE) #copy or perform with value: status e.g. $c->setprop(dbentry,dbkey,$c->param('status') + {$ret .= 'Perform failed for status failed';} + + if (! TRUE) #copy or perform with value: hookScript e.g. $c->setprop(dbentry,dbkey,$c->param('hookScript') + {$ret .= 'Perform failed for hookScript failed';} + + if (! TRUE) #copy or perform with value: hostOverride e.g. $c->setprop(dbentry,dbkey,$c->param('hostOverride') + {$ret .= 'Perform failed for hostOverride failed';} + + if (! TRUE) #copy or perform with value: ACCEPT_TERMS e.g. $c->setprop(dbentry,dbkey,$c->param('ACCEPT_TERMS') + {$ret .= 'Perform failed for ACCEPT_TERMS failed';} + + if (! TRUE) #copy or perform with value: API e.g. $c->setprop(dbentry,dbkey,$c->param('API') + {$ret .= 'Perform failed for API failed';} + + if (! TRUE) #copy or perform with value: keysize e.g. $c->setprop(dbentry,dbkey,$c->param('keysize') + {$ret .= 'Perform failed for keysize failed';} + + if (! TRUE) #copy or perform with value: configure e.g. $c->setprop(dbentry,dbkey,$c->param('configure') + {$ret .= 'Perform failed for configure failed';} + + if (! TRUE) #copy or perform with value: Email e.g. $c->setprop(dbentry,dbkey,$c->param('Email') + {$ret .= 'Perform failed for Email failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } sub perform_CHECKALLDOMAINS { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + my $ret = ""; + + if (! TRUE) #copy or perform with value: AllDomainsCheck e.g. $c->setprop(dbentry,dbkey,$c->param('AllDomainsCheck') + {$ret .= 'Perform failed for AllDomainsCheck failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } sub perform_CHECKALLENABLEDDOMAINS { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + my $ret = ""; + + if (! TRUE) #copy or perform with value: EnabledDomainsCheck e.g. $c->setprop(dbentry,dbkey,$c->param('EnabledDomainsCheck') + {$ret .= 'Perform failed for EnabledDomainsCheck failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } - sub perform_CHECKONEDDOMAINS { + sub perform_CHECKONEDOMAIN { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + my $ret = ""; + + if (! TRUE) #copy or perform with value: OneDomainToCheck e.g. $c->setprop(dbentry,dbkey,$c->param('OneDomainToCheck') + {$ret .= 'Perform failed for OneDomainToCheck failed';} + + if (! TRUE) #copy or perform with value: OneDomainsCheck e.g. $c->setprop(dbentry,dbkey,$c->param('OneDomainsCheck') + {$ret .= 'Perform failed for OneDomainsCheck failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } sub create_link{ # WIP - my ($c,$route, $panel, $index) = @_; + my ($c,$route, $panel, $index) = shift; my $link = "$route?trt=$panel&Selected=$index"; return $link; } diff --git a/Targets/Letsencrypt/_lets_LIST.html.ep b/Targets/Letsencrypt/_lets_LIST.html.ep index b5a7205..5f3853d 100644 --- a/Targets/Letsencrypt/_lets_LIST.html.ep +++ b/Targets/Letsencrypt/_lets_LIST.html.ep @@ -1,33 +1,33 @@ %# -%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-04 16:03:10 +%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-14 12:01:28 %#
- + % if ($config->{debug} == 1) {
 			%= dumper $lets_data
 		
% } - % my $btn = l('lets_APPLY'); - %= form_for "letsencryptd" => (method => 'GET') => begin - - % param 'trt' => $lets_data->{trt} unless param 'trt'; + % my $btn = l('lets_APPLY'); + %= form_for "letsencryptu" => (method => 'POST') => begin + % param 'trt' => $lets_data->{trt} unless param 'trt'; %= hidden_field 'trt' => $lets_data->{trt} %# Inputs etc in here. -
- %= link_to l('lets_CONFIG'), 'letsencryptd?trt=PARAMS' , class=>'link link2' - <%= l('lets_CONFIG') %> - %= link_to l('lets_CHECK_ALL_DOMAINS'), 'letsencryptd?trt=CHECKALLDOMAINS' , class=>'link link3' - %= link_to l('lets_CHECK_ENABLED_DOMAINS'), 'letsencryptd?trt=CHECKALLENABLEDDOMAINS' , class=>'link link4' -
+ %= link_to l('lets_CONFIG'), 'letsencryptd?trt=PARAMS' , class=>'link link2' -

<%=l('lets_IPs_for_this_Server')%>

+ %= link_to l('lets_CHECK_ALL_DOMAINS'), 'letsencryptd?trt=CHECKALLDOMAINS' , class=>'link link3' + + + %= link_to l('lets_CHECK_ENABLED_DOMAINS'), 'letsencryptd?trt=CHECKENABLEDDOMAINS' , class=>'link link4' + + +

<%=l('lets_For_this_Server:')%>

%=l('lets_Internal_IP') @@ -50,7 +50,7 @@ %= text_field 'InternetIP', size => '50', class => 'textinput InternetIP' , pattern=>'.*' , placeholder=>'InternetIP', Readonly=>'true'

-

<%=l('lets_Current_certificate_details')%>

+

<%=l('lets_Current_certificate_details:')%>

%=l('lets_Issuer') @@ -73,7 +73,7 @@ %= text_field 'NotBefore', size => '50', class => 'textinput NotBefore' , pattern=>'.*' , placeholder=>'NotBefore', Readonly=>'true'

-

<%=l('lets_List_of_Domains_and_Hosts')%>

+

<%=l('lets_List_of_Domains_and_Hosts:')%>


@@ -89,17 +89,17 @@ - % my $control_data = $c->stash('DomainList'); + % my $control_data = $self->stash('DomainList'); % foreach my $row (@$control_data) { - - - - - - - - + + + + + + + + %} diff --git a/Targets/Letsencrypt/letsencrypt_en.lex b/Targets/Letsencrypt/letsencrypt_en.lex index b671055..6ea432f 100644 --- a/Targets/Letsencrypt/letsencrypt_en.lex +++ b/Targets/Letsencrypt/letsencrypt_en.lex @@ -1,47 +1,52 @@ # -# Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-05 13:20:33 +# Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-11-14 12:01:28 # -'lets_Issuer' => 'Issuer', -'lets_CHECKALLENABLEDDOMAINS_panel_action_was_successful' => 'CHECKALLENABLEDDOMAINS panel action was successful', -'lets_Domain_name_/_HOSTNAME' => 'Domain name / HOSTNAME', -'lets_Letsencrypt_certificate' => 'Letsencrypt certificate', -'lets_Brief_description' => 'Brief description', -'lets_Content' => 'Content', -'lets_Check_all_enabled_domains' => 'Check all enabled domains', -'lets_Back' => 'Back', -'lets_IPs_for_this_Server' => 'is for this Server', -'lets_Save' => 'Save', -'lets_Manage_letsencrypt-config_settings:' => 'Manage letsencrypt-config settings', -'lets_External_Interface_IP' => 'External Interface IP', -'lets_All_domains_check_result' => 'All domains check result', -'lets_Loop_through_checking_the_letsencrypt' => 'Loop through checking the letsencrypt status for each configured domain which is enabled', -'lets_Not_Before' => 'Not Before', -'lets_CONFIG' => 'Config', -'lets_IS_IN_CERT' => 'Is In cart', 'lets_Check_all_domains' => 'Check all domains', -'lets_ACCEPT_TERMS_STATUS' => 'Accept Terms Status', -'lets_HOSTOVERRIDE_STATUS' => 'Hostoverride Status', -'lets_CONFIG_LETSENCRYPT' => 'confirm Letsencrypt', -'lets_Internet_IP' => 'Internet IP', -'lets_LABEL_POINT' => 'Label Point', -'lets_CHECKALLDOMAINS_panel_action_was_successful' => 'CHECKALLDOMAINS panel action was successful', -'lets_List_of_Domains_and_Hosts' => 'List of Domains and Hosts', -'lets_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful', -'lets_Expiry' => 'Expiry', 'lets_API_STATUS' => 'ape Status', -'lets_Internal_IP' => 'Internal IP', -'lets_SERVICE_STATUS' => 'Service Status', -'lets_LABEL_LECERT' => 'Label secret', -'lets_LIST_panel_action_was_successful' => 'LIST panel action was successful', -'lets_HOOKSCRIPT_STATUS' => 'Hookscript Status', -'lets_CONFIGUREMODE_STATUS' => 'Configuremode Status', -'lets_CHECK' => 'Check', -'lets_KEYSIZE_STATUS' => 'Keysize Status', -'lets_Current_certificate_details' => 'Current certificate details', -'lets_CHECK_ENABLED_DOMAINS' => 'Check Enabled Domains', 'lets_Loop_through_checking_the_letsencrypt' => 'Loop through checking the letsencrypt status for each configured domain', -'lets_APPLY' => 'Apply', -'lets_LABEL_NAMESERVERS' => 'Label timeservers', -'lets_Configuration_for_Letsencrypt' => 'Configuration for Letsencrypt', -'lets_CHECK_ALL_DOMAINS' => 'Check All Domains', +'lets_Save' => 'Save', +'lets_Back' => 'Back', +'lets_LABEL_LECERT' => 'Label secret', +'lets_Loop_through_checking_the_letsencrypt' => 'Loop through checking the letsencrypt status for a specific domain', +'lets_Content' => 'Content', 'lets_Enabled_domains_check_result' => 'Enabled domains check result', +'lets_For_this_Server:' => 'For this server', +'lets_CHECK_ENABLED_DOMAINS' => 'Check Enabled Domains', +'lets_EMAIL' => 'Email', +'lets_CHECKALLDOMAINS_panel_action_was_successful' => 'CHECKALLDOMAINS panel action was successful', +'lets_CONFIG' => 'Config', +'lets_CHECKONEDOMAIN_panel_action_was_successful' => 'CHECKONEDOMAIN panel action was successful', +'lets_Domains_name' => 'Domains name', +'lets_Expiry' => 'Expiry', +'lets_Internet_IP' => 'Internet IP', +'lets_List_of_Domains_and_Hosts:' => 'List of Domains and hosts', +'lets_CHECKALLENABLEDDOMAINS_panel_action_was_successful' => 'CHECKALLENABLEDDOMAINS panel action was successful', +'lets_One_domain_check_result' => 'One domain check result', +'lets_Check_all_enabled_domains' => 'Check all enabled domains', +'lets_APPLY' => 'Apply', +'lets_All_domains_check_result' => 'All domains check result', +'lets_KEYSIZE_STATUS' => 'Keysize Status', +'lets_SERVICE_STATUS' => 'Service Status', +'lets_CHECK_ALL_DOMAINS' => 'Check All Domains', +'lets_Internal_IP' => 'Internal IP', +'lets_LABEL_NAMESERVERS' => 'Label timeservers', +'lets_CHECK' => 'Check', +'lets_Loop_through_checking_the_letsencrypt' => 'Loop through checking the letsencrypt status for each configured domain which is enabled', +'lets_CONFIGUREMODE_STATUS' => 'Configuremode Status', +'lets_External_Interface_IP' => 'External Interface IP', +'lets_Manage_letsencrypt-config_settings:' => 'Manage letsencrypt-config settings', +'lets_Not_Before' => 'Not Before', +'lets_Current_certificate_details:' => 'Current certificate details', +'lets_Letsencrypt_certificate' => 'Letsencrypt certificate', +'lets_HOOKSCRIPT_STATUS' => 'Hookscript Status', +'lets_CONFIG_LETSENCRYPT' => 'confirm Letsencrypt', +'lets_HOSTOVERRIDE_STATUS' => 'Hostoverride Status', +'lets_Brief_description' => 'Brief description', +'lets_IS_IN_CERT' => 'Is In cart', +'lets_LIST_panel_action_was_successful' => 'LIST panel action was successful', +'lets_LABEL_POINT' => 'Label Point', +'lets_ACCEPT_TERMS_STATUS' => 'Accept Terms Status', +'lets_Domain_name_/_HOSTNAME' => 'Domain name / HOSTNAME', +'lets_Check_just_one_domain' => 'Check just one domain', +'lets_Issuer' => 'Issuer', +'lets_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful', \ No newline at end of file diff --git a/Templates/custom.pm.tem b/Templates/custom.pm.tem index 895275a..e34ccdd 100644 --- a/Templates/custom.pm.tem +++ b/Templates/custom.pm.tem @@ -12,6 +12,9 @@ use esmith::AccountsDB; use esmith::NetworksDB; use esmith::DomainsDB; +use constant FALSE => 0; +use constant TRUE => 1; + #The most common ones our $cdb = esmith::ConfigDB->open() || die("Couldn't open config db"); @@ -25,7 +28,13 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); sub validate_${panel} { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + # Validation for each field + my $ret = ""; + + if (! TRUE) #validate $c->param('${field}') + {$ret .= 'Validation for ${field} failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } @@ -48,21 +57,24 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); -# Get control data for table(s) - - sub get_${tablecontrol} { - # Return an array of hashes of the contents for each row and column for ${tablecontrol} - # default is a single row of strings "col1header-1, col2header-1, col3Header-1 etc" - my $c = shift; - my $control_data = $c->stash('${tablecontrol}'); - my @ret = {}; -# foreach my $colHead (@$control_data) { -# my ret{$colHead} = "$colhead-1"; -# }; - return \@ret; - } + Get control data for table(s) + +sub get_${tablecontrol[0]} { + # Return an array of hashes of the contents for each row and column for ${tablecontrol[0]} + # default is a single row of strings "col1header-1, col2header-1, col3Header-1 etc" + # Cols needed are: + # ${col}, + # + my $c = shift; + my $control_data = $c->stash('${tablecontrol[0]}'); + my @ret = {}; + + + return \@ret; +} + # Return hash with values from row in which link clicked on table sub get_selected_${panel} { @@ -79,7 +91,12 @@ our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); sub perform_${panel} { my $c = shift; my $prefix_data = shift; #Data hash as parameter - my $ret = 'ok'; + my $ret = ""; + + if (! TRUE) #copy or perform with value: ${field} e.g. $c->setprop(dbentry,dbkey,$c->param('${field}') + {$ret .= 'Perform failed for ${field} failed';} + + if ($ret eq "") {$ret = 'ok';} return $ret; } diff --git a/Templates/html_controls.html.ep.xml b/Templates/html_controls.html.ep.xml index 0810039..ed1d388 100644 --- a/Templates/html_controls.html.ep.xml +++ b/Templates/html_controls.html.ep.xml @@ -258,6 +258,16 @@ ]]> + + + ]]> + + + + ]]> + diff --git a/json5/Letsencrypt.json5 b/json5/Letsencrypt.json5 index 23b7f5c..0b28277 100644 --- a/json5/Letsencrypt.json5 +++ b/json5/Letsencrypt.json5 @@ -13,6 +13,7 @@ { 'Name': 'List', 'route': 'LIST', + 'Group': 'class=inline-buttons', 'Link2': { 'Type': 'Link', 'href': 'letsencryptd?trt=PARAMS', @@ -28,7 +29,8 @@ 'href': 'letsencryptd?trt=CHECKENABLEDDOMAINS', 'title': 'CHECK_ENABLED_DOMAINS' }, - SubHeader2: 'IPs for this Server', + 'Endgroup': '', + SubHeader2: 'For this Server', Input4: { Name: 'InternalIP', Type: 'ReadonlyText', diff --git a/sm2gen.py b/sm2gen.py index 8b47b7c..3a9751a 100644 --- a/sm2gen.py +++ b/sm2gen.py @@ -29,7 +29,7 @@ ini_file_path = os.path.expanduser("~/.smegit/conf") OPENAI_API_KEY = "" # Configure the basic logging system -logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') # Create a logger logger = logging.getLogger(__name__) @@ -294,7 +294,20 @@ def get_db_fields(): def get_table_control_data(): return find_values_with_key(json5_html_list, "TableControl") - + +def extract_tables(json_data): + result = {} + # Iterate over the 'html' list in the JSON data + for item in json_data.get('html', []): + if isinstance(item, dict): + for key, value in item.items(): + if isinstance(value, dict): + if value.get('Type') == 'Table' and 'TableControl' in value: + table_control = value['TableControl'] + columns = value.get('Columns', []) + result[table_control] = {'columns': columns} + + return result def format_text(text): # @@ -558,7 +571,7 @@ if __name__ == "__main__": json5_html_list = json5_dict["html"] # Identify message - logger.info(f"\nGenerating mojo panels for {hl('PackageName')}") + logger.info(f"Generating mojo panels for {hl('PackageName')}") logger.info("-----------------------------------") # Routes for each panel @@ -586,17 +599,17 @@ if __name__ == "__main__": partial_files.append(check_file_version( target_directory_path + '_' + hl("prefix") + "_" + panel + ".html.ep",force_Files) ) - logger.info(f"Partial files to be created:{partial_files}") + logger.debug(f"Partial files to be created:{partial_files}") lex_file = check_file_version(target_directory_path + hl("PackageName").lower() + "_en.lex",force_Files) logger.info(lex_file) - tablecontrols = ( - get_table_control_data() - ) # arrays of hashes used to drive rows in tables - - # logger.info(strVersion,tablecontrols,routes) - + tablecontrols = extract_tables(json5_dict) + # arrays of hashes used to drive rows in tables + # Generate controller file dbfields = [] #extract_input_fields(json5_dict, 'db') # Params which correspond to Db fields - TBD + logger.debug(f"{tablecontrols}") + logger.debug(f"{tablecontrols.items()}") + #quit(1) try: controller_template = PageTemplateFile( "Templates/controller.pm.tem", CHAMELEON_DEBUG="true" @@ -604,7 +617,7 @@ if __name__ == "__main__": try: controller_perl = controller_template.render( version=strVersion, - tablecontrols=tablecontrols, + tablecontrols=tablecontrols.items(), dbfields=dbfields, **json5_dict, panels=routes, @@ -627,7 +640,11 @@ if __name__ == "__main__": #quit(0) try: custom_controller_perl = custom_controller_template.render( - version=strVersion, panels=routes, tablecontrols=tablecontrols, fields=fields, dbfields=dbfields + version=strVersion, + panels=routes, + tablecontrols=tablecontrols.items(), + fields=fields, + dbfields=dbfields ) # We must be careful to not overwrite the custom file if the developer has already written to it - TBD with open(custom_controller_file, "w") as file: @@ -726,7 +743,7 @@ if __name__ == "__main__": class_name = html_Type.lower()[:4]+type_serial acc_css_entries += f".{class_name} {{}}\n" if not type_serial == "": - print(html_control,html_Type,type_serial) + logger.debug(f"{html_control},{html_Type},{type_serial}") try: simple_control_template = PageTemplate(html_controls[html_Type]) try: @@ -764,7 +781,7 @@ if __name__ == "__main__": # Create the css file (the header, followed by a dumy entry for each class created/used above) with open(css_file, "w") as file: - file.write(f"/*\n Generated by SM2Gen version: {strVersion}\n*/\n") + file.write(f"/*\nGenerated by SM2Gen version: {strVersion}\n*/\n") file.write(f".{hl('PackageName')}-panel {{}}\n") file.write(acc_css_entries);
<%=$c->render_to_string(inline=>$row->{'Domain'})%><%=$c->render_to_string(inline=>$row->{'Description'})%><%=$c->render_to_string(inline=>$row->{'Content'})%><%=$c->render_to_string(inline=>$row->{'Nameservers'})%><%=$c->render_to_string(inline=>$row->{'letsencryptMYIP'})%><%=$c->render_to_string(inline=>$row->{'letsencryptSSLcert'})%><%=$c->render_to_string(inline=>$row->{'isincert'})%><%=$c->render_to_string(inline=>$row->{'Check'})%><%=$c->render_to_string(inline=>$row->{'Table1-Domain name / HOSTNAME'})%><%=$c->render_to_string(inline=>$row->{'Table1-Brief description'})%><%=$c->render_to_string(inline=>$row->{'Table1-Content'})%><%=$c->render_to_string(inline=>$row->{'Table1-LABEL_NAMESERVERS'})%><%=$c->render_to_string(inline=>$row->{'Table1-LABEL_POINT'})%><%=$c->render_to_string(inline=>$row->{'Table1-LABEL_LECERT'})%><%=$c->render_to_string(inline=>$row->{'Table1-IS_IN_CERT'})%><%=$c->render_to_string(inline=>$row->{'Table1-CHECK'})%>