diff --git a/requirements.txt b/requirements.txt index dc548554..907b808e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ django==5.1.4 django-tinymce==4.1.0 openpyxl==3.1.5 psycopg==3.2.3 +django-tasks==0.6.0 diff --git a/svjis/articles/utils.py b/svjis/articles/utils.py index f3ce4d99..96d7fecb 100644 --- a/svjis/articles/utils.py +++ b/svjis/articles/utils.py @@ -3,6 +3,7 @@ import secrets import string import os.path +import time from . import ( views, views_contact, @@ -18,6 +19,7 @@ from django.core.mail import EmailMessage from django.conf import settings from django.contrib.auth.hashers import make_password +from django_tasks import task from openpyxl.styles import NamedStyle, Font, Border, Side, PatternFill @@ -163,12 +165,17 @@ def send_mails(recipient_list: list, subject: str, html_body: str, immediately: models.MessageQueue.objects.create(email=r, subject=subject, body=html_body, status=0) +@task() def send_message_queue(): - messages = models.MessageQueue.objects.filter(status=0) - for m in messages: - send_mails([m.email], m.subject, m.body, True) - m.status = 1 - m.save() + for i in range(100): + print(i) + time.sleep(1) + + # messages = models.MessageQueue.objects.filter(status=0) + # for m in messages: + # send_mails([m.email], m.subject, m.body, True) + # m.status = 1 + # m.save() def get_template(template_key): diff --git a/svjis/articles/views_redaction.py b/svjis/articles/views_redaction.py index 35ac4359..e007e04e 100644 --- a/svjis/articles/views_redaction.py +++ b/svjis/articles/views_redaction.py @@ -285,7 +285,8 @@ def redaction_article_notifications_send_view(request): users = get_users_for_notification(article) recipients = [u for u in users if request.POST.get(f"u_{u.pk}", False) == 'on'] - utils.send_article_notification(recipients, f"{request.scheme}://{request.get_host()}", article) + # utils.send_article_notification(recipients, f"{request.scheme}://{request.get_host()}", article) + utils.send_message_queue.enqueue() i = len(recipients) ctx = utils.get_context() diff --git a/svjis/svjis/settings.py b/svjis/svjis/settings.py index 0937ca0a..c1b1c21f 100644 --- a/svjis/svjis/settings.py +++ b/svjis/svjis/settings.py @@ -42,6 +42,8 @@ 'articles', 'tinymce', 'django.contrib.sitemaps', + 'django_tasks', + 'django_tasks.backends.database', ] MIDDLEWARE = [ @@ -55,6 +57,12 @@ 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] +TASKS = { + "default": { + "BACKEND": "django_tasks.backends.database.DatabaseBackend", + } +} + ROOT_URLCONF = 'svjis.urls' TEMPLATES = [ @@ -83,6 +91,9 @@ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', + 'OPTIONS': { + 'transaction_mode': 'EXCLUSIVE', + }, } }