Commit b4f8ece1ae17ed9540ed50da28d89ec465c6fb0a

Authored by Luan
2 parents a9bdea95 de0130e0

Merge branch 'master' of github.com:TracyWebTech/colab

src/accounts/models.py
... ... @@ -26,12 +26,22 @@ class User(AbstractUser):
26 26 def facebook_link(self):
27 27 return urlparse.urljoin('https://www.facebook.com', self.facebook)
28 28  
29   - def mailinglists(self):
  29 + def mailinglists(self, email=None):
30 30 list_set = set()
31   - for email in self.emails.all():
32   - lists = requests.get(settings.MAILMAN_API_URL, timeout=1,
33   - params={'address': email.address})
  31 +
  32 + if not email:
  33 + emails = self.emails.values_list('address', flat=True)
  34 + else:
  35 + emails = [email]
  36 +
  37 + for email in emails:
  38 + try:
  39 + lists = requests.get(settings.MAILMAN_API_URL, timeout=1,
  40 + params={'address': email})
  41 + except requests.exceptions.Timeout:
  42 + pass
34 43 list_set.update(lists.json())
  44 +
35 45 return tuple(list_set)
36 46  
37 47  
... ...
src/accounts/urls.py
1 1  
2 2 from django.conf.urls import patterns, include, url
3 3  
4   -from .views import UserProfileDetailView, UserProfileUpdateView
  4 +from .views import UserProfileDetailView, UserProfileUpdateView, \
  5 + ManageUserSubscriptionsView
5 6  
6 7  
7 8 urlpatterns = patterns('',
... ... @@ -12,4 +13,7 @@ urlpatterns = patterns('',
12 13  
13 14 url(r'^(?P<username>[\w@+.-]+)/edit/?$',
14 15 UserProfileUpdateView.as_view(), name='user_profile_update'),
  16 +
  17 + url(r'^(?P<username>[\w@+.-]+)/subscriptions/?$',
  18 + ManageUserSubscriptionsView.as_view(), name='user_subscriptions'),
15 19 )
... ...
src/accounts/views.py
... ... @@ -2,9 +2,11 @@
2 2 # encoding: utf-8
3 3  
4 4 import datetime
  5 +import requests
5 6  
6 7 from collections import OrderedDict
7 8  
  9 +from django.conf import settings
8 10 from django.contrib import messages
9 11 from django.db.models import Count
10 12 from django.contrib.auth import get_user_model
... ... @@ -43,6 +45,7 @@ class UserProfileUpdateView(UserProfileBaseMixin, UpdateView):
43 45  
44 46 return obj
45 47  
  48 +
46 49 class UserProfileDetailView(UserProfileBaseMixin, DetailView):
47 50 template_name = 'accounts/user_detail.html'
48 51  
... ... @@ -121,3 +124,25 @@ def signup(request):
121 124 'Profiles not validated are deleted in 24h.'))
122 125  
123 126 return redirect('user_profile', username=user.username)
  127 +
  128 +
  129 +class ManageUserSubscriptionsView(UserProfileBaseMixin, DetailView):
  130 + http_method_names = [u'get', u'post']
  131 + template_name = u'accounts/manage_subscriptions.html'
  132 +
  133 + def post(self, request, *args, **kwargs):
  134 + user = self.get_object()
  135 + for email in user.emails.values_list('address', flat=True):
  136 + current_lists = user.mailinglists(email)
  137 + #url = urlparse.urljoin(settings.MAILMAN_API_URL,
  138 + # )
  139 + #requests.put()
  140 + return self.get(request, *args, **kwargs)
  141 +
  142 + def get_context_data(self, **kwargs):
  143 + context = {}
  144 + resp = requests.get(settings.MAILMAN_API_URL)
  145 + context['lists'] = resp.json()
  146 +
  147 + context.update(kwargs)
  148 + return super(ManageUserSubscriptionsView, self).get_context_data(**context)
... ...