diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/account/account.html b/wagtail/wagtailadmin/templates/wagtailadmin/account/account.html
index 90f803350..21688ce37 100644
--- a/wagtail/wagtailadmin/templates/wagtailadmin/account/account.html
+++ b/wagtail/wagtailadmin/templates/wagtailadmin/account/account.html
@@ -28,6 +28,15 @@
{% endif %}
+
+
+
+
+ {% trans "Choose which email notifications to receive." %}
+
+
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/account/notification_preferences.html b/wagtail/wagtailadmin/templates/wagtailadmin/account/notification_preferences.html
new file mode 100644
index 000000000..971ce6f37
--- /dev/null
+++ b/wagtail/wagtailadmin/templates/wagtailadmin/account/notification_preferences.html
@@ -0,0 +1,18 @@
+{% extends "wagtailadmin/base.html" %}
+{% load i18n %}
+{% block content %}
+ {% trans "Notification Preferences" as prefs_str %}
+ {% include "wagtailadmin/shared/header.html" with title=prefs_str %}
+
+
+{% endblock %}
diff --git a/wagtail/wagtailadmin/urls.py b/wagtail/wagtailadmin/urls.py
index ee68f4655..4a3dc0f12 100644
--- a/wagtail/wagtailadmin/urls.py
+++ b/wagtail/wagtailadmin/urls.py
@@ -77,6 +77,7 @@ urlpatterns += [
url(r'^login/$', account.login, name='wagtailadmin_login'),
url(r'^account/$', account.account, name='wagtailadmin_account'),
url(r'^account/change_password/$', account.change_password, name='wagtailadmin_account_change_password'),
+ url(r'^account/notification_preferences/$', account.notification_preferences, name='wagtailadmin_account_notification_preferences'),
url(r'^logout/$', account.logout, name='wagtailadmin_logout'),
url(r'^userbar/(\d+)/$', userbar.for_frontend, name='wagtailadmin_userbar_frontend'),
diff --git a/wagtail/wagtailadmin/views/account.py b/wagtail/wagtailadmin/views/account.py
index c5e461f55..d5ab71bd6 100644
--- a/wagtail/wagtailadmin/views/account.py
+++ b/wagtail/wagtailadmin/views/account.py
@@ -9,6 +9,7 @@ from django.views.decorators.debug import sensitive_post_parameters
from django.views.decorators.cache import never_cache
from wagtail.wagtailadmin import forms
+from wagtail.wagtailusers.forms import NotificationPreferencesForm
@permission_required('wagtailadmin.access_admin')
@@ -42,6 +43,24 @@ def change_password(request):
})
+@permission_required('wagtailadmin.access_admin')
+def notification_preferences(request):
+
+ if request.POST:
+ form = NotificationPreferencesForm(request.POST, instance=request.user.get_profile())
+
+ if form.is_valid():
+ form.save()
+ messages.success(request, _("Your preferences have been updated successfully!"))
+ return redirect('wagtailadmin_account')
+ else:
+ form = NotificationPreferencesForm(instance=request.user.get_profile())
+
+ return render(request, 'wagtailadmin/account/notification_preferences.html', {
+ 'form': form,
+ })
+
+
@sensitive_post_parameters()
@never_cache
def login(request):
diff --git a/wagtail/wagtailusers/forms.py b/wagtail/wagtailusers/forms.py
index 1624c65ce..057fac6ba 100644
--- a/wagtail/wagtailusers/forms.py
+++ b/wagtail/wagtailusers/forms.py
@@ -1,9 +1,8 @@
from django import forms
-from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm as BaseUserCreationForm
from django.utils.translation import ugettext_lazy as _
-User = get_user_model()
+from wagtail.wagtailusers.models import User, UserProfile
# extend Django's UserCreationForm with an 'is_superuser' field
@@ -130,3 +129,9 @@ class UserEditForm(forms.ModelForm):
user.save()
self.save_m2m()
return user
+
+
+class NotificationPreferencesForm(forms.ModelForm):
+ class Meta:
+ model = UserProfile
+ fields = ("submitted_notifications", "approved_notifications", "rejected_notifications")