Loading grouprise/common_settings.py +5 −2 Original line number Diff line number Diff line Loading @@ -256,8 +256,11 @@ CSP_STYLE_SRC = ("'self'", "'unsafe-inline'") # grouprise Repeatable Tasks (grouprise.core) GROUPRISE_REPEATABLE_TASKS = { 'content2.Content': 'grouprise.features.content.tasks.send_content_notifications', 'contributions.Contribution': 'grouprise.features.contributions.tasks.send_contribution_notifications', 'content2.Content': 'grouprise.features.content.notifications.send_content_notifications', 'contributions.Contribution': 'grouprise.features.contributions.notifications.send_contribution_notifications', } Loading grouprise/core/management/commands/repeat_tasks.py +2 −7 Original line number Diff line number Diff line from django.conf import settings from django.core.management.base import BaseCommand from django.utils.module_loading import import_string from grouprise.core.models import RepeatableTask from grouprise.core.tasks import auto_task def repeat_tasks(task_queryset): for task in task_queryset: obj = task.task_parameter label = obj._meta.label method_name = settings.GROUPRISE_REPEATABLE_TASKS[label] task_method = import_string(method_name) try: task_method(obj) auto_task(task.task_parameter) finally: task.delete() Loading grouprise/core/notifications.py +0 −7 Original line number Diff line number Diff line Loading @@ -8,7 +8,6 @@ from django.apps import apps from django.conf import settings from django.contrib.sites.models import Site from django.core import mail from django.core.mail import get_connection from django.template import loader from grouprise.core.models import PermissionToken Loading Loading @@ -194,11 +193,5 @@ class Notification: for file_name in self.get_attachments(): message.attach_file(file_name) # optional connection switch if kwargs.get('use_sync_email_backend'): message.connection = get_connection(settings.SYNC_EMAIL_BACKEND) elif kwargs.get('use_async_email_backend'): message.connection = get_connection(settings.ASYNC_EMAIL_BACKEND) # we don't expect errors when sending mails because we just pass mails to django-mailer message.send() grouprise/core/tasks.py 0 → 100644 +18 −0 Original line number Diff line number Diff line from django.conf import settings from django.utils.module_loading import import_string from huey.contrib.djhuey import db_task from grouprise.core.models import RepeatableTask @db_task() def auto_task(model): task = RepeatableTask.objects.create( content_type=model.content_type, object_id=model.id) model_class_label = model._meta.label task_method_name = settings.GROUPRISE_REPEATABLE_TASKS[model_class_label] task_method = import_string(task_method_name) task_method(model) task.delete() grouprise/features/content/notifications.py +4 −0 Original line number Diff line number Diff line Loading @@ -76,3 +76,7 @@ class ContentCreated(grouprise.core.notifications.Notification): if self.association: return reverse('content-permalink', args=(self.association.pk,)) return super().get_url() def send_content_notifications(instance): ContentCreated.send_all(instance) Loading
grouprise/common_settings.py +5 −2 Original line number Diff line number Diff line Loading @@ -256,8 +256,11 @@ CSP_STYLE_SRC = ("'self'", "'unsafe-inline'") # grouprise Repeatable Tasks (grouprise.core) GROUPRISE_REPEATABLE_TASKS = { 'content2.Content': 'grouprise.features.content.tasks.send_content_notifications', 'contributions.Contribution': 'grouprise.features.contributions.tasks.send_contribution_notifications', 'content2.Content': 'grouprise.features.content.notifications.send_content_notifications', 'contributions.Contribution': 'grouprise.features.contributions.notifications.send_contribution_notifications', } Loading
grouprise/core/management/commands/repeat_tasks.py +2 −7 Original line number Diff line number Diff line from django.conf import settings from django.core.management.base import BaseCommand from django.utils.module_loading import import_string from grouprise.core.models import RepeatableTask from grouprise.core.tasks import auto_task def repeat_tasks(task_queryset): for task in task_queryset: obj = task.task_parameter label = obj._meta.label method_name = settings.GROUPRISE_REPEATABLE_TASKS[label] task_method = import_string(method_name) try: task_method(obj) auto_task(task.task_parameter) finally: task.delete() Loading
grouprise/core/notifications.py +0 −7 Original line number Diff line number Diff line Loading @@ -8,7 +8,6 @@ from django.apps import apps from django.conf import settings from django.contrib.sites.models import Site from django.core import mail from django.core.mail import get_connection from django.template import loader from grouprise.core.models import PermissionToken Loading Loading @@ -194,11 +193,5 @@ class Notification: for file_name in self.get_attachments(): message.attach_file(file_name) # optional connection switch if kwargs.get('use_sync_email_backend'): message.connection = get_connection(settings.SYNC_EMAIL_BACKEND) elif kwargs.get('use_async_email_backend'): message.connection = get_connection(settings.ASYNC_EMAIL_BACKEND) # we don't expect errors when sending mails because we just pass mails to django-mailer message.send()
grouprise/core/tasks.py 0 → 100644 +18 −0 Original line number Diff line number Diff line from django.conf import settings from django.utils.module_loading import import_string from huey.contrib.djhuey import db_task from grouprise.core.models import RepeatableTask @db_task() def auto_task(model): task = RepeatableTask.objects.create( content_type=model.content_type, object_id=model.id) model_class_label = model._meta.label task_method_name = settings.GROUPRISE_REPEATABLE_TASKS[model_class_label] task_method = import_string(task_method_name) task_method(model) task.delete()
grouprise/features/content/notifications.py +4 −0 Original line number Diff line number Diff line Loading @@ -76,3 +76,7 @@ class ContentCreated(grouprise.core.notifications.Notification): if self.association: return reverse('content-permalink', args=(self.association.pk,)) return super().get_url() def send_content_notifications(instance): ContentCreated.send_all(instance)