93 lines
3.5 KiB
Python
93 lines
3.5 KiB
Python
import os
|
|
|
|
import jinja2
|
|
|
|
|
|
class NewViewModular():
|
|
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
def path_is_exists(self):
|
|
return os.path.exists(f"applications/view/{self.name.split('/')[0]}")
|
|
|
|
def new_dirs(self):
|
|
if not self.path_is_exists():
|
|
# 如果不存在则创建目录
|
|
|
|
# 创建目录操作函数
|
|
os.makedirs(f"applications/view/{self.name.split('/')[0]}")
|
|
|
|
print(self.name + ' 创建成功')
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def add_view(self):
|
|
# jinja渲染
|
|
templateLoader = jinja2.FileSystemLoader(searchpath='applications/common/script/newmodular/template/')
|
|
templateEnv = jinja2.Environment(loader=templateLoader)
|
|
TEMPLATE_FILE = "view"
|
|
template = templateEnv.get_template(TEMPLATE_FILE, )
|
|
templateVars = {"name": self.name}
|
|
outputText = template.render(templateVars)
|
|
with open(f"applications/view/{self.name}.py", "a", encoding='utf-8') as f:
|
|
f.write(outputText)
|
|
f.close()
|
|
|
|
def add_init(self):
|
|
# 判断__init__.py
|
|
if os.path.exists(f"applications/view/{self.name.split('/')[0]}/__init__.py"):
|
|
with open(f"applications/view/{self.name.split('/')[0]}/__init__.py", "r") as file:
|
|
lines = file.readlines()
|
|
print(lines)
|
|
file.close()
|
|
import_line_num = 0
|
|
for line in lines:
|
|
if 'def' in line:
|
|
import_line_num = lines.index(line) - 2
|
|
with open(f"applications/view/{self.name.split('/')[0]}/__init__.py", "w") as file:
|
|
lines.insert(import_line_num,
|
|
f"from applications.view.{self.name.replace('/', '.')} import {self.name.replace('/', '_')}\n")
|
|
print(lines)
|
|
lines.insert(len(lines) - 1, f" app.register_blueprint({self.name.replace('/', '_')})\n")
|
|
print(lines)
|
|
file.writelines(lines)
|
|
file.close()
|
|
return True
|
|
else:
|
|
templateLoader = jinja2.FileSystemLoader(searchpath='applications/common/script/newmodular/template/')
|
|
templateEnv = jinja2.Environment(loader=templateLoader)
|
|
TEMPLATE_FILE = "__init__"
|
|
template = templateEnv.get_template(TEMPLATE_FILE, )
|
|
templateVars = {"name": self.name}
|
|
output = template.render(templateVars)
|
|
with open(f"applications/view/{self.name.split('/')[0]}/__init__.py", "a", encoding='utf-8') as f:
|
|
f.write(output)
|
|
f.close()
|
|
self.add_root_init()
|
|
return True
|
|
|
|
def add_root_init(self):
|
|
with open(f"applications/view/__init__.py", "r") as file:
|
|
lines = file.readlines()
|
|
file.close()
|
|
import_line_num = 0
|
|
for line in lines:
|
|
if 'def' in line:
|
|
import_line_num = lines.index(line) - 2
|
|
with open(f"applications/view/__init__.py", "w") as file:
|
|
lines.insert(
|
|
import_line_num,
|
|
f"from applications.view.{self.name.split('/')[0]} import register_{self.name.split('/')[0]}_views\n")
|
|
print(lines)
|
|
lines.insert(len(lines) - 1, f" register_{self.name.split('/')[0]}_views(app)\n")
|
|
print(lines)
|
|
file.writelines(lines)
|
|
file.close()
|
|
|
|
def new_view(self):
|
|
self.new_dirs()
|
|
self.add_view()
|
|
self.add_init()
|