newthreads.py 1.5 KB

1234567891011121314151617181920212223242526272829303132
  1. from datetime import timedelta
  2. from django.core.urlresolvers import reverse
  3. from django.http import Http404
  4. from django.shortcuts import redirect
  5. from django.template import RequestContext
  6. from django.utils import timezone
  7. from misago.conf import settings
  8. from misago.models import Forum, Thread
  9. from misago.shortcuts import render_to_response
  10. from misago.utils.pagination import make_pagination
  11. def new_threads(request, page=0):
  12. queryset = Thread.objects.filter(forum_id__in=Forum.objects.readable_forums(request.acl)).filter(deleted=False).filter(moderated=False)
  13. items_total = queryset.count();
  14. if items_total > (settings.threads_per_page * 3):
  15. items_total = settings.threads_per_page * 3
  16. try:
  17. pagination = make_pagination(page, items_total, settings.threads_per_page)
  18. except Http404:
  19. return redirect(reverse('new_threads'))
  20. queryset = queryset.order_by('-start').prefetch_related('forum')[pagination['start']:pagination['stop']];
  21. if settings.avatars_on_threads_list:
  22. queryset = queryset.prefetch_related('start_poster', 'last_poster')
  23. return render_to_response('new_threads.html',
  24. {
  25. 'items_total': items_total,
  26. 'threads': Thread.objects.with_reads(queryset, request.user),
  27. 'pagination': pagination,
  28. },
  29. context_instance=RequestContext(request));