mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
62 lines
2.7 KiB
Python
62 lines
2.7 KiB
Python
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)
|