1
|
|
|
from qpage import * |
2
|
|
|
import sys |
3
|
|
|
import gc |
4
|
|
|
import doctest |
5
|
|
|
def error_handler(): |
6
|
|
|
""" |
7
|
|
|
Close files and check errors and start again main |
8
|
|
|
:return:None |
9
|
|
|
call: |
10
|
|
|
-close_files |
11
|
|
|
-error_finder |
12
|
|
|
-Show_items |
13
|
|
|
-enter_to_exit |
14
|
|
|
-main_handler |
15
|
|
|
""" |
16
|
|
|
close_files() # Close all of the open files |
17
|
|
|
vector_2 = error_finder() # load error and pass vector |
18
|
|
|
error_vector = vector_2[0] # extract errors |
19
|
|
|
pass_vector = vector_2[1] # extract pass |
20
|
|
|
print(str(len(error_vector)) + " Error") # print number of errors |
21
|
|
|
print("Please Check Following :\n") |
22
|
|
|
show_items(error_vector) # print error |
23
|
|
|
for i, item in enumerate(pass_vector): |
24
|
|
|
print(str(i + len(error_vector) + 1) + "-" + item) |
25
|
|
|
enter_to_exit() # get input from user to continue |
26
|
|
|
main_handler() |
27
|
|
|
def file_handler(): |
28
|
|
|
""" |
29
|
|
|
Write files |
30
|
|
|
:return:None |
31
|
|
|
call: |
32
|
|
|
-html_init |
33
|
|
|
-contain |
34
|
|
|
-css_creator |
35
|
|
|
-icon_creator |
36
|
|
|
-robot_maker |
37
|
|
|
-close_files |
38
|
|
|
""" |
39
|
|
|
for i in ACTUAL_NAME: |
40
|
|
|
html_init(i) # create pages html files |
41
|
|
|
menu_writer() # write menu for each html file |
42
|
|
|
for i in ACTUAL_NAME: |
43
|
|
|
contain(i) # write contains of each page |
44
|
|
|
html_end(i) # end tags of each page |
45
|
|
|
css_creator() # create css file |
46
|
|
|
icon_creator() |
47
|
|
|
robot_maker() |
48
|
|
|
close_files() |
49
|
|
|
def main_handler_2(time_1=0): |
50
|
|
|
""" |
51
|
|
|
Second part of main handler |
52
|
|
|
:param time_1: time that passed but not counted in generation time |
53
|
|
|
:type time_1:float |
54
|
|
|
:return:None |
55
|
|
|
call: |
56
|
|
|
-file_handler |
57
|
|
|
-address_print |
58
|
|
|
-print_warning |
59
|
|
|
-file_size |
60
|
|
|
-internet |
61
|
|
|
-server |
62
|
|
|
-preview |
63
|
|
|
-close_files |
64
|
|
|
""" |
65
|
|
|
file_handler() # call file_handler |
66
|
|
|
total_perf_time = generation_time(time_1) |
67
|
|
|
print("HOMEPAGE is ready,generated in " + str(total_perf_time) + " sec") |
68
|
|
|
print("Upload output folder contains directly to your host") |
69
|
|
|
print("Please Don't Change HTML Files Name") |
70
|
|
|
address_print() # print files location |
71
|
|
|
print_warning() # print all of the detected warnings |
72
|
|
|
file_size() |
73
|
|
|
logger(True, perf_time=total_perf_time) # add success run of qpage to local logger |
74
|
|
|
if internet(): # check internet connection |
75
|
|
|
server() # send query to qpage server |
76
|
|
|
browse = int(input("Preview HOMEPAGE?[1] or Not[2]")) # get input from user for preview of site |
77
|
|
|
if browse == 1: # check browse status |
78
|
|
|
preview() # call preview function |
79
|
|
|
close_files() # close all of the open files |
80
|
|
|
gc.collect() |
81
|
|
|
def response_handler(response): |
82
|
|
|
""" |
83
|
|
|
Calculate the generation time |
84
|
|
|
:param response: response flag , if there was a response run main handler again |
85
|
|
|
:type response:bool |
86
|
|
|
:return:None |
87
|
|
|
call: |
88
|
|
|
-wait_func |
89
|
|
|
-main_handler |
90
|
|
|
""" |
91
|
|
|
if response: # check response status |
92
|
|
|
print( |
93
|
|
|
"At least one of the folders create for the first time ,\n" |
94
|
|
|
" please put your data in proper order and run program again\n Program Reboot Automatically in 3 Sec") |
95
|
|
|
wait_func(3) # wait for 3 sec |
96
|
|
|
main_handler(False) # call main_handler again with False VERSION control flag |
97
|
|
|
sys.exit() # exit program |
98
|
|
|
def sample_handler(): |
99
|
|
|
""" |
100
|
|
|
Ask for run sample website |
101
|
|
|
:return:None |
102
|
|
|
call: |
103
|
|
|
-sample_site_download |
104
|
|
|
-is_sample_downloaded |
105
|
|
|
""" |
106
|
|
|
# Get Input form user for loading sample files or continue |
107
|
|
|
response = input( |
108
|
|
|
"Press [S] to enter sample site material running or other keys to continue with your data") |
109
|
|
|
print_line(70) # print line |
110
|
|
|
if response.upper() == "S": # check response status |
111
|
|
|
sample_site_download(is_sample_downloaded()) # Call sample download |
112
|
|
|
def main_handler(control_flag=True): |
113
|
|
|
""" |
114
|
|
|
Main Handler |
115
|
|
|
:param control_flag: Check if VERSION control passed in prev step then Check for new VERSION of qpage |
116
|
|
|
:type control_flag:bool |
117
|
|
|
:return:None |
118
|
|
|
call: |
119
|
|
|
-generation_time |
120
|
|
|
-create_folder |
121
|
|
|
-print_logo |
122
|
|
|
-address_print |
123
|
|
|
-version_control |
124
|
|
|
-sample_handler |
125
|
|
|
-response_handler |
126
|
|
|
-page_name_update |
127
|
|
|
-main_handler_2 |
128
|
|
|
-error_log |
129
|
|
|
-logger |
130
|
|
|
-close_files |
131
|
|
|
-enter_to_exit |
132
|
|
|
""" |
133
|
|
|
try: |
134
|
|
|
start_time = generation_time() |
135
|
|
|
response = create_folder() # Check Folder and Files Status |
136
|
|
|
address_print() # Print Files Location |
137
|
|
|
if control_flag: # Check if VERSION control passed in prev step |
138
|
|
|
print("QPAGE By S.Haghighi & M.M.Rahimi") |
139
|
|
|
print("VERSION : " + VERSION) |
140
|
|
|
print_logo() |
141
|
|
|
version_control() # Check for new VERSION of qpage |
142
|
|
|
response_handler(response) # call response_handler |
143
|
|
|
sample_browser() |
144
|
|
|
sample_handler() # run sample handler |
145
|
|
|
clear_folder(OUT_DIR) # clear all of files in output directory |
146
|
|
|
page_name_update() # update page names |
147
|
|
|
main_handler_2(time_1=start_time) # call part_2 of main_handler |
148
|
|
|
except FileNotFoundError as e: # error exception in FileNotFound ( When Something Missed) |
149
|
|
|
error_log(e) |
150
|
|
|
logger(False) # Add Failed Run to local logger file |
151
|
|
|
error_handler() # call error_handler |
152
|
|
|
except ValueError as e: |
153
|
|
|
error_log(e) |
154
|
|
|
print("Bad Input") |
155
|
|
|
logger(False) # Add Failed Run to local logger file |
156
|
|
|
close_files() # Close all of the opne files |
157
|
|
|
enter_to_exit() # get input from user to continue |
158
|
|
|
main_handler() # call part_1 of main_handler , restart from the first |
159
|
|
|
except PermissionError as e: |
160
|
|
|
error_log(e) |
161
|
|
|
logger(False) # Add Failed Run to local logger file |
162
|
|
|
print("Files Is Open By Another Program") |
163
|
|
|
close_files() # Close all of the open files |
164
|
|
|
enter_to_exit() # get input from user to continue |
165
|
|
|
main_handler() # call part_1 of main_handler , restart from the first |
166
|
|
|
if __name__ == "__main__": |
167
|
|
|
args=sys.argv |
168
|
|
|
if len(args)>1: |
169
|
|
|
if args[1].upper()=="TEST": |
170
|
|
|
doctest.testfile("test.py",verbose=True) |
171
|
|
|
else: |
172
|
|
|
print("Bad Input") |
173
|
|
|
else: |
174
|
|
|
main_handler() |
175
|
|
|
|