# -*- coding: utf-8 -*- from __future__ import print_function, unicode_literals, absolute_import, division import json from datetime import datetime from peewee import IntegerField, DateTimeField, TextField, AutoField, BooleanField from domain_admin.config import DEFAULT_BEFORE_EXPIRE_DAYS from domain_admin.enums.event_enum import EventEnum from domain_admin.enums.notify_type_enum import NotifyTypeEnum from domain_admin.model.base_model import BaseModel class NotifyModel(BaseModel): """通知配置""" id = AutoField(primary_key=True) # 用户id user_id = IntegerField(null=False) # 事件分类 event_id = IntegerField(null=False, default=EventEnum.SSL_CERT_EXPIRE) # 通知方式 type_id = IntegerField(null=False, default=NotifyTypeEnum.Unknown) # 过期剩余天数 expire_days = IntegerField(null=False, default=DEFAULT_BEFORE_EXPIRE_DAYS) # 分组 groups_raw = TextField(default=None, null=True) # 原始值 value_raw = TextField(default=None, null=True) # 启用状态 status = BooleanField(null=False, default=True) # 备注说明 comment = TextField(default='', null=False) # 创建时间 create_time = DateTimeField(default=datetime.now) # 更新时间 update_time = DateTimeField(default=datetime.now) class Meta: table_name = 'tb_notify' # 移除唯一索引 # indexes = ( # # 唯一索引 # (('user_id', 'type_id'), True), # ) @property def value(self): if not self.value_raw: return None try: return json.loads(self.value_raw) except ValueError: return None @property def groups(self): if not self.groups_raw: return [] try: return json.loads(self.groups_raw) except ValueError: return [] # email参数 @property def email_list(self): if self.value: return self.value.get('email_list') # webhook参数 @property def webhook_method(self): if self.value: return self.value.get('method') @property def webhook_url(self): if self.value: return self.value.get('url') @property def webhook_headers(self): if self.value: return self.value.get('headers') @property def webhook_body(self): if self.value: return self.value.get('body') # 企业微信参数 @property def work_weixin_corpid(self): if self.value: return self.value.get('corpid') @property def work_weixin_corpsecret(self): if self.value: return self.value.get('corpsecret') @property def work_weixin_body(self): if self.value: return self.value.get('body') # dingtalk @property def ding_talk_appkey(self): if self.value: return self.value.get('appkey') @property def ding_talk_appsecret(self): if self.value: return self.value.get('appsecret') @property def ding_talk_body(self): if self.value: return self.value.get('body') # 飞书 @property def feishu_body(self): if self.value: return self.value.get('body') @property def feishu_params(self): if self.value: return self.value.get('params') @property def feishu_app_id(self): if self.value: return self.value.get('app_id') @property def feishu_app_secret(self): if self.value: return self.value.get('app_secret') # telegram @property def telegram_token(self): if self.value: return self.value.get('token') @property def telegram_chat_id(self): if self.value: return self.value.get('chat_id') @property def telegram_proxies(self): if self.value: return self.value.get('proxies') @property def telegram_body(self): if self.value: return self.value.get('body')