This commit is contained in:
thsrite 2023-08-21 11:02:38 +08:00
parent 4135df693c
commit 6337a72b0f
4 changed files with 91 additions and 1 deletions

View File

@ -8,13 +8,14 @@ from app import schemas
from app.chain.cookiecloud import CookieCloudChain
from app.chain.search import SearchChain
from app.chain.site import SiteChain
from app.core.event import EventManager
from app.core.security import verify_token
from app.db import get_db
from app.db.models.site import Site
from app.db.models.siteicon import SiteIcon
from app.db.systemconfig_oper import SystemConfigOper
from app.helper.sites import SitesHelper
from app.schemas.types import SystemConfigKey
from app.schemas.types import SystemConfigKey, EventType
from app.utils.string import StringUtils
router = APIRouter()
@ -90,6 +91,12 @@ def delete_site(
删除站点
"""
Site.delete(db, site_id)
# 插件站点删除
EventManager().send_event(EventType.SiteDeleted,
{
"plugin_id": ['AutoSignIn', 'SiteStatistic'],
"site_id": site_id
})
return schemas.Response(success=True)
@ -113,6 +120,12 @@ def cookie_cloud_sync(db: Session = Depends(get_db),
Site.reset(db)
SystemConfigOper(db).set(SystemConfigKey.IndexerSites, [])
CookieCloudChain(db).process(manual=True)
# 插件站点删除
EventManager().send_event(EventType.SiteDeleted,
{
"plugin_id": ['AutoSignIn', 'SiteStatistic'],
"site_id": None
})
return schemas.Response(success=True, message="站点已重置!")

View File

@ -571,3 +571,44 @@ class AutoSignIn(_PluginBase):
self._scheduler = None
except Exception as e:
logger.error("退出插件失败:%s" % str(e))
@eventmanager.register(EventType.SiteDeleted)
def site_deleted(self, event):
"""
删除对应站点选中
"""
plugin_id = event.event_data.get("plugin_id")
site_id = event.event_data.get("site_id")
if not plugin_id:
return
if self.__class__.__name__ not in plugin_id:
return
config = self.get_config()
if config:
sign_sites = config.get("sign_sites")
if sign_sites:
if isinstance(sign_sites, str):
sign_sites = [sign_sites]
# 删除对应站点
if site_id:
sign_sites = [site for site in sign_sites if int(site) != int(site_id)]
else:
# 清空
sign_sites = []
# 若无站点,则停止
if len(sign_sites) == 0:
self._enabled = False
# 保存配置
self.update_config(
{
"enabled": self._enabled,
"notify": self._notify,
"cron": self._cron,
"onlyonce": self._onlyonce,
"queue_cnt": self._queue_cnt,
"sign_sites": sign_sites
}
)

View File

@ -1099,3 +1099,36 @@ class SiteStatistic(_PluginBase):
"statistic_type": self._statistic_type,
"statistic_sites": self._statistic_sites,
})
@eventmanager.register(EventType.SiteDeleted)
def site_deleted(self, event):
"""
删除对应站点选中
"""
plugin_id = event.event_data.get("plugin_id")
site_id = event.event_data.get("site_id")
if not plugin_id:
return
if self.__class__.__name__ not in plugin_id:
return
config = self.get_config()
if config:
statistic_sites = config.get("statistic_sites")
if statistic_sites:
if isinstance(statistic_sites, str):
statistic_sites = [statistic_sites]
# 删除对应站点
if site_id:
statistic_sites = [site for site in statistic_sites if int(site) != int(site_id)]
else:
# 清空
statistic_sites = []
# 若无站点,则停止
if len(statistic_sites) == 0:
self._enabled = False
self._statistic_sites = statistic_sites
# 保存配置
self.__update_config()

View File

@ -22,6 +22,8 @@ class EventType(Enum):
SiteSignin = "site.signin"
# 站点数据统计
SiteStatistic = "site.statistic"
# 站点删除
SiteDeleted = "site.deleted"
# 豆瓣想看
DoubanSync = "douban.sync"
# Webhook消息
@ -40,6 +42,7 @@ class EventType(Enum):
NoticeMessage = "notice.message"
# 系统配置Key字典
class SystemConfigKey(Enum):
# 用户已安装的插件