kopia lustrzana https://github.com/wagtail/wagtail
Make send_notification more generic
rodzic
a18b1fa2b8
commit
48ec577271
|
@ -8,7 +8,7 @@ from django.template.loader import render_to_string
|
|||
from django.utils.translation import override
|
||||
|
||||
from wagtail.admin.auth import users_with_page_permission
|
||||
from wagtail.core.models import GroupApprovalTask, PageRevision, TaskState, WorkflowState
|
||||
from wagtail.core.models import GroupApprovalTask, TaskState, WorkflowState
|
||||
from wagtail.core.utils import camelcase_to_underscore
|
||||
from wagtail.users.models import UserProfile
|
||||
|
||||
|
@ -62,25 +62,29 @@ def send_mail(subject, message, recipient_list, from_email=None, **kwargs):
|
|||
return mail.send()
|
||||
|
||||
|
||||
def send_notification(page_revision_id, notification, excluded_user_id):
|
||||
# Get revision
|
||||
revision = PageRevision.objects.get(id=page_revision_id)
|
||||
|
||||
def send_moderation_notification(revision, notification, excluded_user=None):
|
||||
# Get list of recipients
|
||||
if notification == 'submitted':
|
||||
# Get list of publishers
|
||||
include_superusers = getattr(settings, 'WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS', True)
|
||||
recipients = users_with_page_permission(revision.page, 'publish', include_superusers)
|
||||
recipient_users = users_with_page_permission(revision.page, 'publish', include_superusers)
|
||||
elif notification in ['rejected', 'approved']:
|
||||
# Get submitter
|
||||
recipients = [revision.user]
|
||||
recipient_users = [revision.user]
|
||||
else:
|
||||
return False
|
||||
|
||||
if excluded_user:
|
||||
recipient_users = [user for user in recipient_users if user != excluded_user]
|
||||
|
||||
return send_notification(recipient_users, notification, {'revision': revision})
|
||||
|
||||
|
||||
def send_notification(recipient_users, notification, extra_context):
|
||||
# Get list of email addresses
|
||||
email_recipients = [
|
||||
recipient for recipient in recipients
|
||||
if recipient.email and recipient.pk != excluded_user_id and getattr(
|
||||
recipient for recipient in recipient_users
|
||||
if recipient.email and getattr(
|
||||
UserProfile.get_for_user(recipient),
|
||||
notification + '_notifications'
|
||||
)
|
||||
|
@ -97,9 +101,9 @@ def send_notification(page_revision_id, notification, excluded_user_id):
|
|||
|
||||
# Common context to template
|
||||
context = {
|
||||
"revision": revision,
|
||||
"settings": settings,
|
||||
}
|
||||
context.update(extra_context)
|
||||
|
||||
connection = get_connection()
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.utils.translation import gettext as _
|
|||
from django.views.decorators.http import require_GET
|
||||
|
||||
from wagtail.admin import messages
|
||||
from wagtail.admin.mail import send_notification
|
||||
from wagtail.admin.mail import send_moderation_notification
|
||||
from wagtail.core.models import PageRevision
|
||||
|
||||
|
||||
|
@ -28,7 +28,7 @@ def approve_moderation(request, revision_id):
|
|||
buttons.append(messages.button(reverse('wagtailadmin_pages:edit', args=(revision.page.id,)), _('Edit')))
|
||||
messages.success(request, message, buttons=buttons)
|
||||
|
||||
if not send_notification(revision.id, 'approved', request.user.pk):
|
||||
if not send_moderation_notification(revision, 'approved', request.user):
|
||||
messages.error(request, _("Failed to send approval notifications"))
|
||||
|
||||
return redirect('wagtailadmin_home')
|
||||
|
@ -50,7 +50,7 @@ def reject_moderation(request, revision_id):
|
|||
messages.button(reverse('wagtailadmin_pages:edit', args=(revision.page.id,)), _('Edit'))
|
||||
])
|
||||
|
||||
if not send_notification(revision.id, 'rejected', request.user.pk):
|
||||
if not send_moderation_notification(revision, 'rejected', request.user):
|
||||
messages.error(request, _("Failed to send rejection notifications"))
|
||||
|
||||
return redirect('wagtailadmin_home')
|
||||
|
|
Ładowanie…
Reference in New Issue