From efd80e8cedb2f0e14951e43667c7a5b3a1f3a656 Mon Sep 17 00:00:00 2001 From: Sergio Oliveira Date: Tue, 13 Oct 2015 10:45:40 -0300 Subject: [PATCH] Moving from View to ListView --- colab/super_archives/views.py | 51 +++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/colab/super_archives/views.py b/colab/super_archives/views.py index 9e14298..1b6ec40 100644 --- a/colab/super_archives/views.py +++ b/colab/super_archives/views.py @@ -11,7 +11,8 @@ from django.conf import settings from django.contrib import messages from django.core.urlresolvers import reverse from django.db import IntegrityError -from django.views.generic import View +from django.db.models import Q +from django.views.generic import View, ListView from django.utils.translation import ugettext as _ from django.core.exceptions import ObjectDoesNotExist, PermissionDenied from django.utils.decorators import method_decorator @@ -137,42 +138,36 @@ class ThreadView(View): return self.get(request, mailinglist, thread_token) -class ThreadDashboardView(View): +class ThreadDashboardView(ListView): http_method_names = ['get'] + context_object_name = 'lists' + template_name = 'superarchives/thread-dashboard.html' - def get(self, request): + def get_queryset(self): MAX = 6 - context = {} - - all_privates = {} - private_mailinglist = MailingList.objects.filter(is_private=True) - for mailinglist in private_mailinglist: - all_privates[mailinglist.name] = True - - context['lists'] = [] + queryset = [] listnames_for_user = [] - if request.user.is_authenticated(): - user = User.objects.get(username=request.user) + if self.request.user.is_authenticated(): + user = User.objects.get(username=self.request.user) lists_for_user = mailman.get_user_mailinglists(user) listnames_for_user = mailman.extract_listname_from_list( lists_for_user) - for list_ in MailingList.objects.order_by('name'): - if list_.name not in all_privates\ - or list_.name in listnames_for_user: - context['lists'].append(( - list_.name, - mailman.get_list_description(list_.name), - list_.thread_set.filter(spam=False).order_by( - '-latest_message__received_time' - )[:MAX], - [t.latest_message for t in Thread.highest_score.filter( - mailinglist__name=list_.name)[:MAX]], - len(mailman.list_users(list_.name)), - )) - - return render(request, 'superarchives/thread-dashboard.html', context) + query = Q(is_private=False) | Q(name__in=listnames_for_user) + for list_ in MailingList.objects.filter(query).order_by('name'): + queryset.append(( + list_.name, + mailman.get_list_description(list_.name), + list_.thread_set.filter(spam=False).order_by( + '-latest_message__received_time' + )[:MAX], + [t.latest_message for t in Thread.highest_score.filter( + mailinglist__name=list_.name)[:MAX]], + len(mailman.list_users(list_.name)), + )) + + return queryset class EmailView(View): -- libgit2 0.21.2