Commit efd80e8cedb2f0e14951e43667c7a5b3a1f3a656
1 parent
71357f92
Exists in
master
and in
11 other branches
Moving from View to ListView
Signed-off-by: Gustavo Jaruga <darksshades@gmail.com> Signed-off-by: Sergio Oliveira <sergio@tracy.com.br>
Showing
1 changed file
with
23 additions
and
28 deletions
Show diff stats
colab/super_archives/views.py
| @@ -11,7 +11,8 @@ from django.conf import settings | @@ -11,7 +11,8 @@ from django.conf import settings | ||
| 11 | from django.contrib import messages | 11 | from django.contrib import messages |
| 12 | from django.core.urlresolvers import reverse | 12 | from django.core.urlresolvers import reverse |
| 13 | from django.db import IntegrityError | 13 | from django.db import IntegrityError |
| 14 | -from django.views.generic import View | 14 | +from django.db.models import Q |
| 15 | +from django.views.generic import View, ListView | ||
| 15 | from django.utils.translation import ugettext as _ | 16 | from django.utils.translation import ugettext as _ |
| 16 | from django.core.exceptions import ObjectDoesNotExist, PermissionDenied | 17 | from django.core.exceptions import ObjectDoesNotExist, PermissionDenied |
| 17 | from django.utils.decorators import method_decorator | 18 | from django.utils.decorators import method_decorator |
| @@ -137,42 +138,36 @@ class ThreadView(View): | @@ -137,42 +138,36 @@ class ThreadView(View): | ||
| 137 | return self.get(request, mailinglist, thread_token) | 138 | return self.get(request, mailinglist, thread_token) |
| 138 | 139 | ||
| 139 | 140 | ||
| 140 | -class ThreadDashboardView(View): | 141 | +class ThreadDashboardView(ListView): |
| 141 | http_method_names = ['get'] | 142 | http_method_names = ['get'] |
| 143 | + context_object_name = 'lists' | ||
| 144 | + template_name = 'superarchives/thread-dashboard.html' | ||
| 142 | 145 | ||
| 143 | - def get(self, request): | 146 | + def get_queryset(self): |
| 144 | MAX = 6 | 147 | MAX = 6 |
| 145 | - context = {} | ||
| 146 | - | ||
| 147 | - all_privates = {} | ||
| 148 | - private_mailinglist = MailingList.objects.filter(is_private=True) | ||
| 149 | - for mailinglist in private_mailinglist: | ||
| 150 | - all_privates[mailinglist.name] = True | ||
| 151 | - | ||
| 152 | - context['lists'] = [] | 148 | + queryset = [] |
| 153 | 149 | ||
| 154 | listnames_for_user = [] | 150 | listnames_for_user = [] |
| 155 | - if request.user.is_authenticated(): | ||
| 156 | - user = User.objects.get(username=request.user) | 151 | + if self.request.user.is_authenticated(): |
| 152 | + user = User.objects.get(username=self.request.user) | ||
| 157 | lists_for_user = mailman.get_user_mailinglists(user) | 153 | lists_for_user = mailman.get_user_mailinglists(user) |
| 158 | listnames_for_user = mailman.extract_listname_from_list( | 154 | listnames_for_user = mailman.extract_listname_from_list( |
| 159 | lists_for_user) | 155 | lists_for_user) |
| 160 | 156 | ||
| 161 | - for list_ in MailingList.objects.order_by('name'): | ||
| 162 | - if list_.name not in all_privates\ | ||
| 163 | - or list_.name in listnames_for_user: | ||
| 164 | - context['lists'].append(( | ||
| 165 | - list_.name, | ||
| 166 | - mailman.get_list_description(list_.name), | ||
| 167 | - list_.thread_set.filter(spam=False).order_by( | ||
| 168 | - '-latest_message__received_time' | ||
| 169 | - )[:MAX], | ||
| 170 | - [t.latest_message for t in Thread.highest_score.filter( | ||
| 171 | - mailinglist__name=list_.name)[:MAX]], | ||
| 172 | - len(mailman.list_users(list_.name)), | ||
| 173 | - )) | ||
| 174 | - | ||
| 175 | - return render(request, 'superarchives/thread-dashboard.html', context) | 157 | + query = Q(is_private=False) | Q(name__in=listnames_for_user) |
| 158 | + for list_ in MailingList.objects.filter(query).order_by('name'): | ||
| 159 | + queryset.append(( | ||
| 160 | + list_.name, | ||
| 161 | + mailman.get_list_description(list_.name), | ||
| 162 | + list_.thread_set.filter(spam=False).order_by( | ||
| 163 | + '-latest_message__received_time' | ||
| 164 | + )[:MAX], | ||
| 165 | + [t.latest_message for t in Thread.highest_score.filter( | ||
| 166 | + mailinglist__name=list_.name)[:MAX]], | ||
| 167 | + len(mailman.list_users(list_.name)), | ||
| 168 | + )) | ||
| 169 | + | ||
| 170 | + return queryset | ||
| 176 | 171 | ||
| 177 | 172 | ||
| 178 | class EmailView(View): | 173 | class EmailView(View): |