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)