mirror of
https://github.com/eduardogsilva/routerfleet.git
synced 2025-06-20 17:15:39 +02:00
76 lines
3.5 KiB
Python
76 lines
3.5 KiB
Python
from django.db import models
|
|
from router_manager.models import Router
|
|
from backup_data.models import RouterBackup
|
|
import uuid
|
|
|
|
|
|
class Notification(models.Model):
|
|
notification_type = models.CharField(choices=(('status_online', 'Status change: Online'), ('status_offline', 'Status change: Offline'), ('backup_fail', 'Backup failed')), max_length=14)
|
|
router = models.ForeignKey(Router, on_delete=models.CASCADE, blank=True, null=True)
|
|
router_backup = models.ForeignKey(RouterBackup, on_delete=models.CASCADE, blank=True, null=True)
|
|
|
|
created = models.DateTimeField(auto_now_add=True)
|
|
updated = models.DateTimeField(auto_now=True)
|
|
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
|
|
|
|
|
|
class MessageChannel(models.Model):
|
|
name = models.CharField(max_length=100, unique=True)
|
|
enabled = models.BooleanField(default=True)
|
|
channel_type = models.CharField(
|
|
max_length=100, choices=(
|
|
('callmebot', 'CallMeBot (WhatsApp)'), ('telegram', 'Telegram'),
|
|
)
|
|
)
|
|
destination = models.CharField(max_length=100, blank=True, null=True)
|
|
token = models.CharField(max_length=100, blank=True, null=True)
|
|
|
|
status_change_offline = models.BooleanField(default=True)
|
|
status_change_online = models.BooleanField(default=True)
|
|
backup_fail = models.BooleanField(default=True)
|
|
daily_status_report = models.BooleanField(default=True)
|
|
daily_backup_report = models.BooleanField(default=True)
|
|
|
|
updated = models.DateTimeField(auto_now=True)
|
|
created = models.DateTimeField(auto_now_add=True)
|
|
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
|
|
|
|
def __str__(self):
|
|
return self.name + ' (' + self.channel_type + ')'
|
|
|
|
|
|
class Message(models.Model):
|
|
channel = models.ForeignKey(MessageChannel, on_delete=models.CASCADE)
|
|
subject = models.CharField(max_length=100, blank=True, null=True)
|
|
message = models.TextField()
|
|
status = models.CharField(max_length=100, choices=(
|
|
('pending', 'Pending'), ('sent', 'Sent'), ('failed', 'Failed'),
|
|
), default='pending')
|
|
retry_count = models.IntegerField(default=0)
|
|
next_retry = models.DateTimeField(blank=True, null=True)
|
|
error_message = models.TextField(blank=True, null=True)
|
|
error_status_code = models.IntegerField(blank=True, null=True)
|
|
completed = models.DateTimeField(blank=True, null=True)
|
|
|
|
updated = models.DateTimeField(auto_now=True)
|
|
created = models.DateTimeField(auto_now_add=True)
|
|
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
|
|
|
|
|
|
class MessageSettings(models.Model):
|
|
name = models.CharField(max_length=16, default='message_settings', unique=True)
|
|
max_length = models.IntegerField(default=2000)
|
|
max_retry = models.IntegerField(default=3)
|
|
retry_interval = models.IntegerField(default=60) # in seconds
|
|
concatenate_status_change = models.BooleanField(default=True)
|
|
status_change_delay = models.IntegerField(default=120) # in seconds
|
|
concatenate_backup_fails = models.BooleanField(default=True)
|
|
backup_fails_delay = models.IntegerField(default=600) # in seconds
|
|
last_daily_status_report = models.DateTimeField(blank=True, null=True)
|
|
last_daily_backup_report = models.DateTimeField(blank=True, null=True)
|
|
daily_report_time = models.CharField(max_length=5, default='07:00')
|
|
|
|
updated = models.DateTimeField(auto_now=True)
|
|
created = models.DateTimeField(auto_now_add=True)
|
|
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
|
|
|