123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- from django.core.urlresolvers import reverse
- from django.db.models import Q
- from django.shortcuts import redirect
- from django.utils.translation import ugettext_lazy, ugettext as _
- from misago.core.shortcuts import paginate
- from misago.readtracker import make_threads_read_aware
- from misago.threads.views.generic.base import ViewBase
- __all__ = ['OrderThreadsMixin', 'ThreadsView']
- class OrderThreadsMixin(object):
- order_by = (
- ('recently-replied', ugettext_lazy("Recently replied")),
- ('last-replied', ugettext_lazy("Last replied")),
- ('most-replied', ugettext_lazy("Most replied")),
- ('least-replied', ugettext_lazy("Least replied")),
- ('newest', ugettext_lazy("Newest")),
- ('oldest', ugettext_lazy("Oldest")),
- )
- def get_ordering(self, kwargs):
- if kwargs.get('sort') in [o[0] for o in self.order_by]:
- return kwargs.get('sort')
- else:
- return self.order_by[0][0]
- def is_ordering_default(self, order_by):
- return self.order_by[0][0] == order_by
- def get_ordering_name(self, order_by):
- for ordering in self.order_by:
- if ordering[0] == order_by:
- return ordering[1]
- def get_orderings_dicts(self, exclude_ordering, links_params):
- url_kwargs = links_params.copy()
- dicts = []
- for ordering in self.order_by:
- if not dicts:
- url_kwargs.pop('sort', None)
- else:
- url_kwargs['sort'] = ordering[0]
- if ordering[0] != exclude_ordering:
- dicts.append({
- 'url': reverse(self.link_name, kwargs=url_kwargs),
- 'name': ordering[1],
- })
- return dicts
- class ThreadsView(ViewBase):
- def get_threads(self, request, kwargs):
- queryset = self.get_threads_queryset(request, forum)
- queryset = threads_qs.order_by('-last_post_id')
- page = paginate(threads_qs, kwargs.get('page', 0), 30, 10)
- threads = [thread for thread in page.object_list]
- return page, threads
- def get_threads_queryset(self, request):
- return forum.thread_set.all().order_by('-last_post_id')
- def make_threads_read_aware(self, user, threads):
- make_threads_read_aware(user, threads)
|