32 lines
973 B
Python
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)
|