Files
FastapiAdmin/backend/app/utils/velocity_initializer.py
T
zhangtao 714896161f refactor(module_generator): 重构代码生成模块结构
重构代码生成模块,删除冗余文件并优化结构:
1. 删除旧的form、page、table等相关文件
2. 新增gencode模块基础结构
3. 移动jinja2工具类和模板引擎初始化器到utils目录
4. 优化数据库模型关系定义
5. 更新nginx配置支持WebSocket
6. 添加正则验证和加密工具类
7. 修复菜单和部门模型的循环引用问题
8. 优化初始化脚本和配置加载逻辑

调整初始化流程,使用统一会话管理:
1. 修改数据库初始化使用AsyncSessionLocal
2. 优化定时任务初始化逻辑
3. 统一配置和字典服务初始化方式
4. 修复模型关系定义导致的循环导入问题

其他改进:
1. 更新requirements.txt添加依赖
2. 调整IP白名单配置
3. 优化数据库连接日志输出
4. 修复模型继承关系问题
2025-09-12 01:05:07 +08:00

45 lines
1.7 KiB
Python

from jinja2 import Environment, FileSystemLoader, select_autoescape
import os
from module_gen.utils.jinja2_tools import snake_to_pascal_case, snake_to_camel, snake_2_colon, is_base_column, \
get_sqlalchemy_type, get_column_options
class VelocityInitializer:
"""模板引擎初始化器"""
@staticmethod
def init_velocity() -> Environment:
"""初始化模板引擎"""
try:
# 设置模板加载器
template_dir = os.path.abspath(os.path.join(os.getcwd(), 'module_gen/templates'))
loader = FileSystemLoader(template_dir)
# 创建Jinja2环境
env = Environment(
loader=loader,
autoescape=select_autoescape(['html', 'xml']),
trim_blocks=True,
lstrip_blocks=True
)
# 添加自定义过滤器
env.filters.update({
'capitalize': lambda x: x.capitalize(),
'lower': lambda x: x.lower(),
'upper': lambda x: x.upper(),
'camelcase': lambda x: ''.join(word.title() for word in x.split('_')),
'snakecase': lambda x: '_'.join(x.lower().split()),
'snake_to_pascal_case': snake_to_pascal_case,
'snake_to_camel': snake_to_camel,
'snake_2_colon': snake_2_colon,
'is_base_column': is_base_column,
'get_sqlalchemy_type': get_sqlalchemy_type,
'get_column_options': get_column_options,
})
return env
except Exception as e:
raise RuntimeError(f"初始化模板引擎失败: {str(e)}")