kumify/msgio/models.py

48 lines
No EOL
1.8 KiB
Python

from django.db import models
from django.contrib.auth import get_user_model
from .signals import send_message
# Create your models here.
class Notification(models.Model):
content = models.TextField()
recipient = models.ForeignKey(get_user_model(), models.CASCADE)
app = models.CharField(max_length=64, null=True, blank=True)
data = models.CharField(max_length=128, null=True, blank=True)
def send(self):
dispatchers = self.notificationdispatcher_set.all()
response = []
if dispatchers:
for dispatcher in dispatchers:
response.append(send_message.send_robust(self.__class__, dispatcher=dispatcher.dispatcher, notification=self))
else:
for dispatcher in GatewayUser.objects.filter(user=self.recipient):
response.append(send_message.send_robust(self.__class__, dispatcher=dispatcher.gateway, notification=self))
return response
class NotificationDispatcher(models.Model):
notification = models.ForeignKey(Notification, models.CASCADE)
dispatcher = models.CharField(max_length=64)
class NotificationDatetimeSchedule(models.Model):
notification = models.ForeignKey(Notification, models.CASCADE)
datetime = models.DateTimeField()
sent = models.BooleanField(default=False)
class NotificationDailySchedule(models.Model):
notification = models.ForeignKey(Notification, models.CASCADE)
time = models.TimeField()
last_sent = models.DateField(null=True, blank=True)
class GatewayUser(models.Model):
user = models.ForeignKey(get_user_model(), models.CASCADE)
gateway = models.CharField(max_length=64)
class GatewayUserSetting(models.Model):
gatewayuser = models.ForeignKey(GatewayUser, models.CASCADE)
key = models.CharField(max_length=64)
value = models.CharField(max_length=256)