Sort out parameters to sm2gen
This commit is contained in:
parent
a551ee928c
commit
6e29aebd82
@ -24,7 +24,7 @@ else
|
||||
fi
|
||||
|
||||
# Run the second program
|
||||
python3 sm2gen.py -f json5/"$2.json5"
|
||||
python3 sm2gen.py -f json5/"$2.json5" --force --noLang
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: sm2gen.py failed."
|
||||
exit 1
|
||||
|
@ -1,11 +1,10 @@
|
||||
#
|
||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 08:37:59
|
||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-19 08:43:41
|
||||
#
|
||||
#
|
||||
# Routines to be edited by the developer to provide validation for parameters
|
||||
# and provison of the control data for table(s)
|
||||
#
|
||||
##
|
||||
use esmith::util;
|
||||
use esmith::HostsDB;
|
||||
use esmith::AccountsDB;
|
||||
|
@ -1,11 +1,11 @@
|
||||
#
|
||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 15:44:18
|
||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 09:02:36
|
||||
#
|
||||
#
|
||||
# Routines to be edited by the developer to provide validation for parameters
|
||||
# and provison of the control data for table(s)
|
||||
#
|
||||
use esmith::util;
|
||||
# lcPackageName=json5_dict["PackageName"].lower(),
|
||||
|
||||
use esmith::HostsDB;
|
||||
use esmith::AccountsDB;
|
||||
use esmith::NetworksDB;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package SrvMngr::Controller::CreateStarterWebsite;
|
||||
#
|
||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 08:38:32
|
||||
# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-19 08:43:41
|
||||
#
|
||||
#----------------------------------------------------------------------
|
||||
# heading : Miscellaneous
|
||||
|
@ -1,5 +1,5 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 09:09:54
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-19 09:57:16
|
||||
%#
|
||||
<div id="CreateStarterWebsite-PARAMS" class="partial CreateStarterWebsite-PARAMS">
|
||||
<script>
|
||||
@ -13,8 +13,8 @@
|
||||
% my $btn = l('csw_APPLY');
|
||||
%= form_for "CreateStarterWebsited" => (method => 'POST') => begin
|
||||
|
||||
% param 'trt' => $csw_data->{trt} unless param 'trt';
|
||||
%= hidden_field 'trt' => $csw_data->{trt}
|
||||
% param 'trt' => ${prefix}_data->{trt} unless param 'trt';
|
||||
%= hidden_field 'trt' => ${prefix}_data->{trt}
|
||||
%# Inputs etc in here.
|
||||
|
||||
<h1><%=l('csw_Create_a_starter_website')%></h1>
|
||||
@ -40,7 +40,7 @@
|
||||
<p><span class=label>
|
||||
%=l('csw_')
|
||||
</span><span class=data>
|
||||
% param 'companyName' => $csw_data->{companyName} unless param 'companyName';
|
||||
% param 'companyName' => ${prefix}_data->{companyName} unless param 'companyName';
|
||||
%= text_field 'companyName', size => '50', class => 'input' , pattern=>'.*' , placeholder=>'companyName'
|
||||
<br></span></p>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
<p><span class=label>
|
||||
%=l('csw_')
|
||||
</span><span class=data>
|
||||
% param 'header1' => $csw_data->{header1} unless param 'header1';
|
||||
% param 'header1' => ${prefix}_data->{header1} unless param 'header1';
|
||||
%= text_field 'header1', size => '50', class => 'input' , pattern=>'.*' , placeholder=>'header1'
|
||||
<br></span></p>
|
||||
|
||||
@ -62,7 +62,7 @@
|
||||
<span class=label>
|
||||
%=l('csw_')
|
||||
</span><span class=data>
|
||||
% param 'text1' => $csw_data->{text1} unless param 'text1';
|
||||
% param 'text1' => ${prefix}_data->{text1} unless param 'text1';
|
||||
%= text_area 'text1', cols=>40, rows=>10
|
||||
</span><br>
|
||||
|
||||
@ -73,7 +73,7 @@
|
||||
<p><span class=label>
|
||||
%=l('csw_')
|
||||
</span><span class=data>
|
||||
% param 'header2' => $csw_data->{header2} unless param 'header2';
|
||||
% param 'header2' => ${prefix}_data->{header2} unless param 'header2';
|
||||
%= text_field 'header2', size => '50', class => 'input' , pattern=>'.*' , placeholder=>'header2'
|
||||
<br></span></p>
|
||||
|
||||
@ -84,7 +84,7 @@
|
||||
<span class=label>
|
||||
%=l('csw_')
|
||||
</span><span class=data>
|
||||
% param 'text2' => $csw_data->{text2} unless param 'text2';
|
||||
% param 'text2' => ${prefix}_data->{text2} unless param 'text2';
|
||||
%= text_area 'text2', cols=>40, rows=>10
|
||||
</span><br>
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
/*
|
||||
Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 15:44:18
|
||||
Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-19 09:57:16
|
||||
*/
|
||||
|
@ -1,7 +1,9 @@
|
||||
%#
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 08:38:32
|
||||
%# Generated by SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-19 09:57:16
|
||||
%#
|
||||
% layout 'default', title => "Sme server 2 - Create Starter Website", share_dir => './';
|
||||
%# css specific to this panel:
|
||||
%= stylesheet '/css/createstarterwebsite.css'
|
||||
% content_for 'module' => begin
|
||||
<div id="module" class="module CreateStarterWebsite-panel">
|
||||
|
||||
@ -17,22 +19,22 @@
|
||||
%= $c->render_to_string(inline => stash('modul') );
|
||||
% }
|
||||
|
||||
%if ($csw_data->{first}) {
|
||||
%if (${prefix}_data->{first}) {
|
||||
<br><p>
|
||||
%=$c->render_to_string(inline =>$c->l($csw_data->{first}))
|
||||
%=$c->render_to_string(inline =>$c->l(${prefix}_data->{first}))
|
||||
</p>
|
||||
|
||||
%} elsif ($csw_data->{success}) {
|
||||
%} elsif (${prefix}_data->{success}) {
|
||||
<div class='sme-border'>
|
||||
<h2> Operation Status Report</h2><p>
|
||||
%= $c->l($csw_data->{success});
|
||||
%= $c->l(${prefix}_data->{success});
|
||||
</p>
|
||||
</div>
|
||||
|
||||
%} elsif ($csw_data->{error}) {
|
||||
%} elsif (${prefix}_data->{error}) {
|
||||
<div class='sme-error'>
|
||||
<h2> Operation Status Report - error</h2><p>
|
||||
%= $c->l($csw_data->{error});
|
||||
%= $c->l(${prefix}_data->{error});
|
||||
</p>
|
||||
</div>
|
||||
%}
|
||||
@ -40,7 +42,7 @@
|
||||
%#Routing to partials according to trt parameter.
|
||||
%#This ought to be cascading if/then/elsif, but is easier to just stack the if/then's rather like a case statement'
|
||||
|
||||
% if ($csw_data->{trt} eq "PARAMS") {
|
||||
% if (${prefix}_data->{trt} eq "PARAMS") {
|
||||
%= include 'partials/_csw_PARAMS'
|
||||
%}
|
||||
|
||||
|
@ -1,21 +1,21 @@
|
||||
#
|
||||
# Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:4.5.4 On Python:3.12.3 at 2024-09-18 09:28:01
|
||||
# Generated by SM2Gen version: SM2Gen version:0.8 Chameleon version:3.8.1 On Python:3.12.3 at 2024-09-19 09:57:16
|
||||
#
|
||||
'csw_Create_a_starter_website' => 'Create a starter website',
|
||||
'csw_You_can_leave_any_field' => 'You can leave any field blank if you do not need it. ',
|
||||
'csw_First_header,_typically_used_for' => 'First header, Typically used for short phrases such as Leader in the field of textile manufacturing',
|
||||
'csw_Second_header,_typically_used_for' => 'Second header, Typically used for short phrases such as For more information or To order our products:',
|
||||
'csw_Manage_CreateStarterWebsite_settings:' => 'Manage CreateStarterWebsite settings:',
|
||||
'csw_' => '',
|
||||
'csw_Text_following_second_header,_typically' => 'Text following second header, Typically used for contact or ordering information:',
|
||||
'csw_To_create_a_simple_web' => 'To create a simple web page for your company, Fill in the fields below and click onCreate. ',
|
||||
'csw_Do_you_wish_to_proceed?' => 'Do you wish to proceed?',
|
||||
'csw_The_text_that_you_enter' => 'The text that you enter below will be line wrapped for a nicer appearance in your web page. Leave a blank line whenever you want to start a new paragraph. If you need to force a line break without starting a new paragraph (for example after each line of a mailing address), Then type the four-character sequence',
|
||||
'csw_When_you_create_this_web' => 'When you create this web page, The file index. Htm will be overwritten in your web site directory. ',
|
||||
'csw_Create' => 'Create',
|
||||
'csw_Do_not_use_this_optionif' => 'Do not use this optionif you have already customized your web site, Since it will overwrite the index. Htm file in your web site directory. ',
|
||||
'csw_Text_following_first_header,_typically' => 'Text following first header, Typically used for a paragraph of marketing information. ',
|
||||
'csw_APPLY' => 'Apply',
|
||||
'csw_First_header,_typically_used_for' => 'First header, Typically used for short phrases such as Leader in the field of textile manufacturing',
|
||||
'csw_Create_a_starter_website' => 'Create a starter website',
|
||||
'csw_' => '',
|
||||
'csw_You_can_leave_any_field' => 'You can leave any field blank if you do not need it. ',
|
||||
'csw_Manage_CreateStarterWebsite_settings:' => 'Manage CreateStarterWebsite settings:',
|
||||
'csw_Second_header,_typically_used_for' => 'Second header, Typically used for short phrases such as For more information or To order our products:',
|
||||
'csw_Create_Starter_Website' => 'Create Starter Website',
|
||||
'csw_Hello_PARAMS' => 'Hello PARAMS',
|
||||
'csw_APPLY' => 'Apply',
|
||||
'csw_Text_following_first_header,_typically' => 'Text following first header, Typically used for a paragraph of marketing information. ',
|
||||
'csw_Create' => 'Create',
|
||||
'csw_Do_you_wish_to_proceed?' => 'Do you wish to proceed?',
|
||||
'csw_The_text_that_you_enter' => 'The text that you enter below will be line wrapped for a nicer appearance in your web page. Leave a blank line whenever you want to start a new paragraph. If you need to force a line break without starting a new paragraph (for example after each line of a mailing address), Then type the four-character sequence',
|
||||
'csw_Do_not_use_this_optionif' => 'Do not use this optionif you have already customized your web site, Since it will overwrite the index. Htm file in your web site directory. ',
|
||||
'csw_Text_following_second_header,_typically' => 'Text following second header, Typically used for contact or ordering information:',
|
||||
'csw_PARAMS_panel_action_was_successful' => 'PARAMS panel action was successful',
|
||||
'csw_To_create_a_simple_web' => 'To create a simple web page for your company, Fill in the fields below and click onCreate. ',
|
||||
|
@ -2,8 +2,8 @@
|
||||
%# Generated by ${version}
|
||||
%#
|
||||
% layout 'default', title => "Sme server 2 - ${MenuDescription}", share_dir => './';
|
||||
% css specific to this panel:
|
||||
%= stylesheet '/css/{lcPackageName}.css'
|
||||
%# css specific to this panel:
|
||||
%= stylesheet '/css/${lcPackageName}.css'
|
||||
% content_for 'module' => begin
|
||||
<div id="module" class="module ${PackageName}-panel">
|
||||
|
||||
|
112
sm2gen.py
112
sm2gen.py
@ -321,51 +321,54 @@ def get_translation(message="Hello", language="french"):
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
def check_file_version(filename, ThresholdSecs=3):
|
||||
def check_file_version(filename,force_Files=False):
|
||||
#
|
||||
# Check modified versus creation date of the file and return +".new" if modified since creation + ThresholdSecs
|
||||
#
|
||||
try:
|
||||
with open(filename, 'r') as file:
|
||||
# Read the first three lines
|
||||
header_lines = [file.readline().strip() for _ in range(5)]
|
||||
if force_Files:
|
||||
return filename
|
||||
ThresholdSecs = 3 #allow secs since creation date before treat as changed.
|
||||
try:
|
||||
with open(filename, 'r') as file:
|
||||
# Read the first three lines
|
||||
header_lines = [file.readline().strip() for _ in range(5)]
|
||||
|
||||
# Extract the timestamp
|
||||
timestamp_str = None
|
||||
for line in header_lines:
|
||||
if ' at ' in line:
|
||||
# Split at 'at', expect the timestamp to be in the third part
|
||||
print(line)
|
||||
timestamp_str = line.split('at')[2].strip()
|
||||
break
|
||||
|
||||
if timestamp_str is None:
|
||||
print("Warning: No timestamp found. Returning original filename.")
|
||||
return filename # Return the original filename if no timestamp is found
|
||||
# Extract the timestamp
|
||||
timestamp_str = None
|
||||
for line in header_lines:
|
||||
if ' at ' in line:
|
||||
# Split at 'at', expect the timestamp to be in the third part
|
||||
#print(line)
|
||||
timestamp_str = line.split('at')[2].strip()
|
||||
break
|
||||
|
||||
if timestamp_str is None:
|
||||
print("Warning: No timestamp found. Returning original filename.")
|
||||
return filename # Return the original filename if no timestamp is found
|
||||
|
||||
# Convert the string timestamp to a datetime object
|
||||
file_timestamp = datetime.strptime(timestamp_str, '%Y-%m-%d %H:%M:%S')
|
||||
# Convert the string timestamp to a datetime object
|
||||
file_timestamp = datetime.strptime(timestamp_str, '%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# Add the threshold seconds to the creation date
|
||||
file_timestamp += timedelta(seconds=ThresholdSecs)
|
||||
# Add the threshold seconds to the creation date
|
||||
file_timestamp += timedelta(seconds=ThresholdSecs)
|
||||
|
||||
# Get the last modified time of the file, ignoring milliseconds
|
||||
file_modified_time = datetime.fromtimestamp(os.path.getmtime(filename)).replace(microsecond=0)
|
||||
|
||||
print(file_modified_time,file_timestamp)
|
||||
# Get the last modified time of the file, ignoring milliseconds
|
||||
file_modified_time = datetime.fromtimestamp(os.path.getmtime(filename)).replace(microsecond=0)
|
||||
|
||||
#print(file_modified_time,file_timestamp)
|
||||
|
||||
# Compare the timestamps
|
||||
if file_modified_time > file_timestamp:
|
||||
return f"{filename}.new"
|
||||
else:
|
||||
return filename
|
||||
# Compare the timestamps
|
||||
if file_modified_time > file_timestamp:
|
||||
return f"{filename}.new"
|
||||
else:
|
||||
return filename
|
||||
|
||||
except FileNotFoundError:
|
||||
print(f"Error: The file '{filename}' does not exist.")
|
||||
return filename
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {traceback.format_exc()}")
|
||||
return filename
|
||||
except FileNotFoundError:
|
||||
#print(f"Error: The file '{filename}' does not exist.")
|
||||
return filename
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {traceback.format_exc()}")
|
||||
return filename
|
||||
|
||||
|
||||
def convert_lex_to_dict(pairs_string):
|
||||
@ -416,25 +419,30 @@ if __name__ == "__main__":
|
||||
default=json_filename,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-nco",
|
||||
"--force",
|
||||
action = 'store_true',
|
||||
help="Force an overwrite of all files",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--noController",
|
||||
help="Stop it creating a controller file",
|
||||
default="yes",
|
||||
action = 'store_false',
|
||||
help="Stop it creating a controller file (not currently implemented)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-nh", "--noHtml", help="Stop it creating html files(s)", default="yes"
|
||||
"--noHtml",
|
||||
action = 'store_false',
|
||||
help="Stop it creating html files(s) (not currently implemented)", default=False
|
||||
)
|
||||
parser.add_argument(
|
||||
"-nl",
|
||||
"--noLang",
|
||||
action = 'store_false',
|
||||
help="Stop it creating language localise files(s)",
|
||||
default="yes",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-ncu",
|
||||
"--noCust",
|
||||
help="Stop it creating Custom controller file",
|
||||
default="yes",
|
||||
action = 'store_false',
|
||||
help="Stop it creating Custom controller file (not currently implemented)",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
json_filename = args.filename
|
||||
@ -473,23 +481,25 @@ if __name__ == "__main__":
|
||||
# File names
|
||||
#
|
||||
# Define the path for the generated files
|
||||
# force them to be overwritten
|
||||
force_Files = args.force
|
||||
directory_path = Path("Targets/" + hl("PackageName"))
|
||||
# Create the directory if it doesn't exist
|
||||
directory_path.mkdir(parents=True, exist_ok=True)
|
||||
target_directory_path = "Targets/" + hl("PackageName") + "/"
|
||||
|
||||
controller_file = check_file_version(target_directory_path + hl("PackageName") + ".pm")
|
||||
custom_controller_file = check_file_version(target_directory_path + hl("PackageName") + "-Custom.pm",3)
|
||||
controller_file = check_file_version(target_directory_path + hl("PackageName") + ".pm",force_Files)
|
||||
custom_controller_file = check_file_version(target_directory_path + hl("PackageName") + "-Custom.pm",force_Files)
|
||||
#print(custom_controller_file)
|
||||
layout_file = check_file_version(target_directory_path + hl("PackageName").lower() + ".html.ep")
|
||||
css_file = check_file_version(target_directory_path + hl("PackageName").lower() + ".css")
|
||||
layout_file = check_file_version(target_directory_path + hl("PackageName").lower() + ".html.ep",force_Files)
|
||||
css_file = check_file_version(target_directory_path + hl("PackageName").lower() + ".css",force_Files)
|
||||
partial_files = list()
|
||||
for panel in routes:
|
||||
partial_files.append(check_file_version(
|
||||
target_directory_path + '_' + hl("prefix") + "_" + panel + ".html.ep")
|
||||
target_directory_path + '_' + hl("prefix") + "_" + panel + ".html.ep",force_Files)
|
||||
)
|
||||
print(f"Partial files to be created:{partial_files}")
|
||||
lex_file = check_file_version(target_directory_path + hl("PackageName").lower() + "_en.lex")
|
||||
lex_file = check_file_version(target_directory_path + hl("PackageName").lower() + "_en.lex",force_Files)
|
||||
print(lex_file)
|
||||
tablecontrols = (
|
||||
get_table_control_data()
|
||||
|
Loading…
Reference in New Issue
Block a user