Add notification preferences form, view, template and link from account

This commit is contained in:
Nick Smith 2014-06-19 17:35:22 +01:00
parent 77da60b6d3
commit 6dcb489d6b
5 changed files with 55 additions and 3 deletions

View file

@ -28,6 +28,15 @@
</small>
</li>
{% endif %}
<li class="row row-flush">
<div class="col6">
<a href="{% url 'wagtailadmin_account_notification_preferences' %}" class="button button-primary">{% trans "Notification preferences" %}</a>
</div>
<small class="col6">
{% trans "Choose which email notifications to receive." %}
</small>
</li>
</ul>
</div>
{% endblock %}
{% endblock %}

View file

@ -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 %}
<div class="nice-padding">
<form action="{% url 'wagtailadmin_account_notification_preferences' %}" method="POST">
{% csrf_token %}
<ul class="listing">
{% for field in form %}
{% include "wagtailadmin/shared/field_as_li.html" with field=field %}
{% endfor %}
<input type="submit" value="{% trans 'Update' %}" />
</ul>
</form>
</div>
{% endblock %}

View file

@ -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'),

View file

@ -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):

View file

@ -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")