File size: 1,638 Bytes
b4f2238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""Django app configuration."""

from __future__ import annotations

import logging
import sys
from typing import Any

from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _

logger = logging.getLogger(__name__)


class DocumentsConfig(AppConfig):
    """法律文书生成系统应用配置"""

    default_auto_field: str = "django.db.models.BigAutoField"
    name: str = "apps.documents"
    verbose_name = _("文书生成")

    def ready(self) -> None:
        """应用启动时的初始化"""
        from .services.code_placeholders.autodiscover import autodiscover_code_placeholders

        autodiscover_code_placeholders()

        # 注册信号处理器(包含缓存失效逻辑)
        from django.db.models.signals import post_migrate

        from . import signals

        post_migrate.connect(self._on_post_migrate, sender=self)

    def _on_post_migrate(self, sender: Any, **kwargs: Any) -> None:
        """
        数据库迁移完成后自动初始化默认文件夹模板

        这个方法在 migrate 命令执行完成后触发,确保:
        1. 数据库表已创建
        2. 不会在每次启动时重复执行(仅在 migrate 后)
        """
        if "test" in sys.argv or "pytest" in sys.modules:
            return
        try:
            from .models import FolderTemplate

            if FolderTemplate.objects.exists():
                return
            logger.info("首次迁移完成,暂无默认文件夹模板,请手动在后台创建。")
        except Exception as e:
            logger.warning("文件夹模板初始化检查跳过: %s", e)