summaryrefslogtreecommitdiffstats
path: root/apps/patchwork/views/user.py
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2010-08-11 14:16:28 +0800
committerJeremy Kerr <jk@ozlabs.org>2011-04-14 17:23:04 +0800
commit41f19b6643b44768dc06561c992c04ed6148477d (patch)
tree6f1c3d1fbe5e15e53d3c028a8e654f05b19e68fb /apps/patchwork/views/user.py
parentc2c6a408c7764fa29389ce160f52776c9308d50a (diff)
downloadpatchwork-41f19b6643b44768dc06561c992c04ed6148477d.tar.bz2
patchwork-41f19b6643b44768dc06561c992c04ed6148477d.tar.xz
Add email opt-out system
We're going to start generating emails on patchwork updates, so firstly allow people to opt-out of all patchwork communications. We do this with a 'mail settings' interface, allowing non-registered users to set preferences on their email address. Logged-in users can do this through the user profile view. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps/patchwork/views/user.py')
-rw-r--r--apps/patchwork/views/user.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/apps/patchwork/views/user.py b/apps/patchwork/views/user.py
index 3d28f4b..4a0e845 100644
--- a/apps/patchwork/views/user.py
+++ b/apps/patchwork/views/user.py
@@ -24,7 +24,8 @@ from django.shortcuts import render_to_response, get_object_or_404
from django.contrib import auth
from django.contrib.sites.models import Site
from django.http import HttpResponseRedirect
-from patchwork.models import Project, Bundle, Person, EmailConfirmation, State
+from patchwork.models import Project, Bundle, Person, EmailConfirmation, \
+ State, EmailOptout
from patchwork.forms import UserProfileForm, UserPersonLinkForm, \
RegistrationForm
from patchwork.filters import DelegateFilter
@@ -99,7 +100,13 @@ def profile(request):
context['bundles'] = Bundle.objects.filter(owner = request.user)
context['profileform'] = form
- people = Person.objects.filter(user = request.user)
+ optout_query = '%s.%s IN (SELECT %s FROM %s)' % (
+ Person._meta.db_table,
+ Person._meta.get_field('email').column,
+ EmailOptout._meta.get_field('email').column,
+ EmailOptout._meta.db_table)
+ people = Person.objects.filter(user = request.user) \
+ .extra(select = {'is_optout': optout_query})
context['linked_emails'] = people
context['linkform'] = UserPersonLinkForm()