Files
FastapiAdmin/backend/app/utils/velocity_initializer.py
T
zhangtao 81d131c0a4 refactor(common): 替换分页服务方法及代码生成模块重构
- 将分页服务中方法名由get_page_obj统一替换为paginate
- 注意相关controller均调整调用方式,保证统一接口调用
- 代码生成模块数据库模型统一替换为GenTableModel和GenTableColumnModel
- 更改数据库类型及分页相关配置为settings.DATABASE_TYPE统一管理
- 重构代码生成模块查询参数,新增GenTableQueryParam和GenTableColumnQueryParam类支持更灵活查询
- 数据模型中Pydantic Schema类型统一调整为Schema后缀
- 优化异常处理,增加请求参数验证错误的友好提示映射
- 调整中间件及依赖以支持更严格的类型检查及更健壮的用户权限认证逻辑
- 微调日志打印格式,改进请求日志信息输出风格
2025-09-19 01:41:10 +08:00

45 lines
1.7 KiB
Python

from jinja2 import Environment, FileSystemLoader, select_autoescape
import os
from .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)}")