From b07590ce108ca730e80074332a02f37265fb8f35 Mon Sep 17 00:00:00 2001 From: ngfchl Date: Fri, 14 Oct 2022 22:46:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=AF=8F=E6=AC=A1=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=95=B0=E6=8D=AE=E5=BA=93=E5=90=8E=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=AB=99=E7=82=B9=E4=BF=A1=E6=81=AF=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pt_site/apps.py | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/pt_site/apps.py b/pt_site/apps.py index 0100543..ebfca70 100644 --- a/pt_site/apps.py +++ b/pt_site/apps.py @@ -1,33 +1,42 @@ import json import logging +import os from django.apps import AppConfig - -from ptools.settings import BASE_DIR +from django.db.models.signals import post_migrate logger = logging.getLogger('ptools') +def app_ready_handler(sender, **kwargs): + from pt_site.models import Site + logger.info('初始化站点信息') + try: + with open('pt_site_site.json', 'r') as f: + # print(f.readlines()) + data = json.load(f) + logger.info('正在初始化站点规则信息表') + logger.info('更新规则中,返回结果为True为新建,为False为更新,其他是错误了') + for site_rules in data: + if site_rules.get('pk'): + del site_rules['pk'] + if site_rules.get('id'): + del site_rules['id'] + site_obj = Site.objects.update_or_create(defaults=site_rules, url=site_rules.get('url')) + msg = site_obj[0].name + (' 规则新增成功!' if site_obj[1] else '规则更新成功!') + logger.info(msg) + except Exception as e: + logger.error('初始化站点信息出错!{}'.format(e)) + + class PtSiteConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'pt_site' verbose_name = 'PT站点管理' def ready(self): - from pt_site.models import Site - logger.info('初始化站点信息') - try: - with open('pt_site_site.json', 'r') as f: - # print(f.readlines()) - data = json.load(f) - logger.info('更新规则中,返回结果为True为新建,为False为更新,其他是错误了') - for site_rules in data: - if site_rules.get('pk'): - del site_rules['pk'] - if site_rules.get('id'): - del site_rules['id'] - site_obj = Site.objects.update_or_create(defaults=site_rules, url=site_rules.get('url')) - msg = site_obj[0].name + (' 规则新增成功!' if site_obj[1] else '规则更新成功!') - logger.info(msg) - except Exception as e: - logger.error('初始化站点信息出错!{}'.format(e)) + # 环境变量不存在,说明数据库还未初始化,先跳过初始化站点数据 + if os.getenv('CONTAINER_ALREADY_STARTED'): + post_migrate.connect(app_ready_handler, sender=self) + else: + logger.info('第一次启动容器,初始化数据库中')