From 6dcb489d6b9579cbbfcdecc781f0806aa3d1df7f Mon Sep 17 00:00:00 2001 From: Nick Smith Date: Thu, 19 Jun 2014 17:35:22 +0100 Subject: [PATCH] Add notification preferences form, view, template and link from account --- .../wagtailadmin/account/account.html | 11 ++++++++++- .../account/notification_preferences.html | 18 ++++++++++++++++++ wagtail/wagtailadmin/urls.py | 1 + wagtail/wagtailadmin/views/account.py | 19 +++++++++++++++++++ wagtail/wagtailusers/forms.py | 9 +++++++-- 5 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 wagtail/wagtailadmin/templates/wagtailadmin/account/notification_preferences.html 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 %} + +
    +
    + {% csrf_token %} +
      + {% for field in form %} + {% include "wagtailadmin/shared/field_as_li.html" with field=field %} + {% endfor %} + +
    +
    +
    +{% 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")