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):
|
||||
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)
|
||||
|
||||
objects = EmailQueueQuerySet.as_manager()
|
||||
|
|
|
|||
|
|
@ -21,8 +21,10 @@ def send_email(email_uuid):
|
|||
def send_email_for_queued_events():
|
||||
logger.info('Sending email for queued events')
|
||||
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():
|
||||
logger.info('Sending email for queue %s', email_queue.title)
|
||||
from django.core.mail import send_mail
|
||||
from django.conf import settings
|
||||
send_mail(
|
||||
|
|
|
|||
|
|
@ -43,4 +43,5 @@ class ApplicationEmailViewSet(
|
|||
user = get_object_or_404(User, uuid=user_uuid)
|
||||
application = get_application(self.request)
|
||||
instance = serializer.save(user=user, application=application)
|
||||
instance.send()
|
||||
if not instance.queue:
|
||||
instance.send()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue