From a7e544d050ec2c4ae90a2215bbb8793f88561a5a Mon Sep 17 00:00:00 2001 From: Charles Oliveira <18oliveira.charles@gmail.com> Date: Thu, 23 Jul 2015 14:49:23 -0400 Subject: [PATCH] Added informative messages for subscription and unsubscription on email lists --- colab/accounts/utils/mailman.py | 22 +++++++++------------- colab/accounts/views.py | 8 ++++++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/colab/accounts/utils/mailman.py b/colab/accounts/utils/mailman.py index 77b2be3..708e846 100644 --- a/colab/accounts/utils/mailman.py +++ b/colab/accounts/utils/mailman.py @@ -22,39 +22,35 @@ def subscribe(listname, address): url = get_url(listname) try: result = requests.put(url, timeout=TIMEOUT, data={'address': address}) - if result.status_code is not 200: - return False, '%s: %s' % (listname, result.json()) + return True, '%s: %s' % (listname, result.json()) except: LOGGER.exception('Unable to subscribe user') - return False, 'Unable to subscribe user' - return True, 'Success' + return False, 'Error: Unable to subscribe user' def unsubscribe(listname, address): url = get_url(listname) try: - requests.delete(url, timeout=TIMEOUT, data={'address': address}) + result = requests.delete(url, timeout=TIMEOUT, data={'address': address}) + return True, '%s: %s' % (listname, result.json()) except: LOGGER.exception('Unable to unsubscribe user') - return False - return True + return False, 'Error: Unable to unsubscribe user' def update_subscription(address, lists): current_lists = mailing_lists(address=address) - error_messages = [] + info_messages = [] for maillist in current_lists: if maillist not in lists: - unsubscribe(maillist, address) + info_messages.append(unsubscribe(maillist, address)) for maillist in lists: if maillist not in current_lists: - subscribed, message = subscribe(maillist, address) - if not subscribed: - error_messages.append(message) + info_messages.append(subscribe(maillist, address)) - return error_messages + return info_messages def mailing_lists(**kwargs): diff --git a/colab/accounts/views.py b/colab/accounts/views.py index 756c200..f787b42 100644 --- a/colab/accounts/views.py +++ b/colab/accounts/views.py @@ -145,8 +145,12 @@ class ManageUserSubscriptionsView(UserProfileBaseMixin, DetailView): for email in user.emails.values_list('address', flat=True): lists = self.request.POST.getlist(email) info_messages = user.update_subscription(email, lists) - for message in info_messages: - messages.success(request, _(message)) + for operation_status, message in info_messages: + if operation_status: + messages.success(request, _(message)) + else: + messages.error(request, _(message)) + return redirect('user_profile', username=user.username) -- libgit2 0.21.2