celery beat
This commit is contained in:
parent
4c7587e6e0
commit
f91f279a5a
3 changed files with 6 additions and 3 deletions
|
|
@ -13,7 +13,7 @@ class EmailQueueQuerySet(models.query.QuerySet):
|
||||||
|
|
||||||
class EmailQueue(BaseModel):
|
class EmailQueue(BaseModel):
|
||||||
title = models.CharField(_('title'), max_length=255)
|
title = models.CharField(_('title'), max_length=255)
|
||||||
user = models.ForeignKey(User, verbose_name=_('user'), on_delete=models.CASCADE)
|
user = models.ForeignKey(User, verbose_name=_('user'), on_delete=models.PROTECT)
|
||||||
last_sent = models.DateTimeField(_('last sent'), auto_now_add=True)
|
last_sent = models.DateTimeField(_('last sent'), auto_now_add=True)
|
||||||
|
|
||||||
objects = EmailQueueQuerySet.as_manager()
|
objects = EmailQueueQuerySet.as_manager()
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,10 @@ def send_email(email_uuid):
|
||||||
def send_email_for_queued_events():
|
def send_email_for_queued_events():
|
||||||
logger.info('Sending email for queued events')
|
logger.info('Sending email for queued events')
|
||||||
for email_queue in EmailQueue.objects.all():
|
for email_queue in EmailQueue.objects.all():
|
||||||
qs = Email.objects.filter(queue=email_queue, stats=Email.StateChoices.INIT, created_at_gte=F('queue__last_sent'))
|
logger.info('Sending email for queue %s', email_queue.title)
|
||||||
|
qs = Email.objects.filter(queue=email_queue, stats=Email.StateChoices.INIT, created_at__gte=F('queue__last_sent'))
|
||||||
if email_queue.last_sent <= timezone.now() - timezone.timedelta(hours=1) and qs.exists():
|
if email_queue.last_sent <= timezone.now() - timezone.timedelta(hours=1) and qs.exists():
|
||||||
|
logger.info('Sending email for queue %s', email_queue.title)
|
||||||
from django.core.mail import send_mail
|
from django.core.mail import send_mail
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
send_mail(
|
send_mail(
|
||||||
|
|
|
||||||
|
|
@ -43,4 +43,5 @@ class ApplicationEmailViewSet(
|
||||||
user = get_object_or_404(User, uuid=user_uuid)
|
user = get_object_or_404(User, uuid=user_uuid)
|
||||||
application = get_application(self.request)
|
application = get_application(self.request)
|
||||||
instance = serializer.save(user=user, application=application)
|
instance = serializer.save(user=user, application=application)
|
||||||
|
if not instance.queue:
|
||||||
instance.send()
|
instance.send()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue