#!/usr/bin/env python3 # -*- coding: utf-8 -*- from __future__ import annotations import html from datetime import datetime from typing import Optional import pytz # ==================== 时区处理工具函数 ==================== CST_TZ = pytz.timezone("Asia/Shanghai") def get_cst_now() -> datetime: return datetime.now(CST_TZ) def get_cst_now_str() -> str: return get_cst_now().strftime("%Y-%m-%d %H:%M:%S") def parse_cst_datetime(datetime_str: str) -> datetime: naive = datetime.strptime(datetime_str, "%Y-%m-%d %H:%M:%S") return CST_TZ.localize(naive) # ==================== 安全工具(与 app_security 保持兼容) ==================== def escape_html(text: Optional[object]) -> str: try: from app_security import escape_html as _escape_html return _escape_html(text) except Exception: if text is None: return "" return html.escape(str(text)) def sanitize_sql_like_pattern(pattern: Optional[object]) -> str: try: from app_security import sanitize_sql_like_pattern as _sanitize_sql_like_pattern return _sanitize_sql_like_pattern(pattern) except Exception: if pattern is None: return "" return str(pattern).replace("\\", "\\\\").replace("%", "\\%").replace("_", "\\_")