yzk_wechat_event/apps/warning/utils/alarm.py

32 lines
973 B
Python

from abc import ABC
from apps.warning.models import WarningLog, WarningSettingTypeChoices
from libs.dingding.dingding import DingDing
class BaseAlarm(ABC):
def send_text(self, text, setting):
pass
class DingDingAlarm(BaseAlarm):
def send_text(self, text, setting):
webhook = setting.get('webhook')
secret = setting.get('secret')
success = DingDing.send_message(text, webhook, secret)
if not success:
webhook = setting.get('fallback_webhook')
secret = setting.get('fallback_secret')
success = DingDing.send_message(text, webhook, secret)
return success
def alarm_by_warning_log(warning_log: WarningLog):
warning_setting = warning_log.warning_setting
setting_type = warning_setting.setting_type
if setting_type == WarningSettingTypeChoices.DINGDING:
dingding = DingDingAlarm()
return dingding.send_text(warning_log.text, warning_setting.setting)