Files
ptools/pt_site/apps.py
2023-02-21 15:58:40 +08:00

62 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import json
import logging
import traceback
from django.apps import AppConfig
from django.db.models.signals import post_migrate
logger = logging.getLogger('ptools')
def app_ready_handler(sender, **kwargs):
from pt_site.models import Site
from pt_site.models import UserLevelRule
logger.info('初始化站点信息')
try:
with open('pt_site_site.json', 'r') as f:
# print(f.readlines())
# Site.objects.filter(url='http://leaves.red/').update(url='https://leaves.red/')
# UserLevelRule.objects.filter(site_id='http://leaves.red/').update(site_id='https://leaves.red/')
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']
url = site_rules.get('url')
site_obj = Site.objects.update_or_create(defaults=site_rules, url=url)
msg = site_obj[0].name + (' 规则新增成功!' if site_obj[1] else '规则更新成功!')
# logger.info(msg)
with open('pt_site_userlevelrule.json', 'r') as file:
upgrade_data = json.load(file)
for upgrade in upgrade_data:
if upgrade.get('id'):
del upgrade['id']
upgrade['level'] = upgrade.get('level').replace(' ', '')
upgrade['rights'] = upgrade.get('rights').replace(' ', '')
upgrade_obj = UserLevelRule.objects.update_or_create(
site_id=upgrade.get('site_id'), level_id=upgrade.get('level_id'),
defaults=upgrade
)
# logger.info(
# f'{upgrade_obj[0].site.name} {"用户升级规则新增成功!" if site_obj[1] else "用户升级规则更新成功!"}')
logger.info('数据库初始化完成!')
except Exception as e:
logger.error('初始化站点信息出错!{}'.format(e))
logger.error(traceback.format_exc(limit=5))
class PtSiteConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'pt_site'
verbose_name = '下载管理'
def ready(self):
# 环境变量不存在,说明数据库还未初始化,先跳过初始化站点数据
# if os.path.exists('CONTAINER_ALREADY_STARTED_PLACEHOLDER'):
# logger.info('第一次启动容器,初始化数据库中')
post_migrate.connect(app_ready_handler, sender=self)