Coverage for src/postorius/views/user.py : 68%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# -*- coding: utf-8 -*- # Copyright (C) 1998-2019 by the Free Software Foundation, Inc. # # This file is part of Postorius. # # Postorius is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # Postorius is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # Postorius. If not, see <http://www.gnu.org/licenses/>.
ChangeSubscriptionForm, UserPreferences, UserPreferencesFormset)
"""Generic view for the logged-in user's various preferences."""
request.user)
def dispatch(self, request, *args, **kwargs): request, *args, **kwargs)
try: form.save() except HTTPError as e: messages.error(self.request, e.msg) if form.has_changed(): messages.success( self.request, _('Your preferences have been updated.')) else: messages.info(self.request, _('Your preferences did not change.')) return super(UserPreferencesView, self).form_valid(form)
"""The logged-in user's global Mailman preferences."""
# Get the defaults and pre-populate so view shows them
# This is a bit of a hack so preferences behave as users expect # We probably don't want to save, only display here # but this means that whatever preferences the users see first are # the ones they have unless they explicitly change them
# Get layers of default preferences to match how they are applied # We ignore self_link as we don't want to over-write it
# Clobber defaults with any preferences already set if key != "self_link": combinedpreferences[key] = self.mm_user.preferences[key]
"""The logged-in user's address-based Mailman Preferences."""
UserPreferences, formset=UserPreferencesFormset, extra=0)
# grab the default preferences defaultpreferences = get_mailman_client().preferences
# grab your global preferences globalpreferences = self.mm_user.preferences
# start a new combined preferences object combinedpreferences = []
for address in self.mm_user.addresses: # make a per-address prefs object prefs = {}
# initialize with default preferences for key in defaultpreferences: if key != "self_link": prefs[key] = defaultpreferences[key]
# overwrite with user's global preferences for key in globalpreferences: if key != "self_link": prefs[key] = globalpreferences[key]
# overwrite with address-specific preferences for key in address.preferences: if key != "self_link": prefs[key] = address.preferences[key] combinedpreferences.append(prefs)
# put the combined preferences back on the original object for key in prefs: if key != "self_link": address.preferences[key] = prefs[key]
return combinedpreferences
**kwargs) data['formset'].forms, self.mm_user.addresses)):
"""The logged-in user's subscription preferences."""
raise Http404(_('Subscription does not exist'))
request, *args, **kwargs)
user=self.request.user, verified=True).order_by( "email").values_list("email", flat=True) user_emails, initial={'email': self.subscription.email})
return reverse( 'user_list_options', kwargs=dict(list_id=self.mlist.list_id))
"""The logged-in user's subscription-based Mailman Preferences."""
continue
request, *args, **kwargs)
UserPreferences, formset=UserPreferencesFormset, extra=0)
# grab the default preferences defaultpreferences = get_mailman_client().preferences
# grab your global preferences globalpreferences = self.mm_user.preferences
# start a new combined preferences object combinedpreferences = []
for sub in self.subscriptions: # make a per-address prefs object prefs = {}
# initialize with default preferences for key in defaultpreferences: if key != "self_link": prefs[key] = defaultpreferences[key]
# overwrite with user's global preferences for key in globalpreferences: if key != "self_link": prefs[key] = globalpreferences[key]
# overwrite with address-based preferences # There is currently no better way to do this, # we may consider revisiting. addresspreferences = {} for address in self.mm_user.addresses: if sub.email == address.email: addresspreferences = address.preferences
for key in addresspreferences: if key != "self_link": prefs[key] = addresspreferences[key]
# overwrite with subscription-specific preferences for key in sub.preferences: if key != "self_link": prefs[key] = sub.preferences[key]
combinedpreferences.append(prefs)
return combinedpreferences # return [sub.preferences for sub in self.subscriptions]
**kwargs) data['formset'].forms, self.subscriptions)):
def user_subscriptions(request): """Shows the subscriptions of a user.""" {'memberships': memberships}) |