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)
|