list.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.core.urlresolvers import reverse
  2. from django.shortcuts import redirect
  3. from django.template import RequestContext
  4. from django.utils.translation import ugettext as _
  5. from misago.acl.utils import ACLError403, ACLError404
  6. from misago.forums.models import Forum
  7. from misago.threads.models import Thread, Post
  8. from misago.threads.views.base import BaseView
  9. from misago.views import error403, error404
  10. class List(BaseView):
  11. def fetch_forum(self, forum):
  12. self.forum = Forum.objects.get(pk=forum, type='forum')
  13. self.request.acl.forums.check_forum(self.forum)
  14. def fetch_threads(self, page):
  15. self.threads = Thread.objects.filter(forum=self.forum).order_by('-last').all()
  16. def __call__(self, request, slug=None, forum=None, page=0):
  17. self.request = request
  18. try:
  19. self.fetch_forum(forum)
  20. self.fetch_threads(page)
  21. except Forum.DoesNotExist:
  22. return error404(self.request)
  23. except ACLError403 as e:
  24. return error403(args[0], e.message)
  25. except ACLError404 as e:
  26. return error404(args[0], e.message)
  27. return request.theme.render_to_response('threads/list.html',
  28. {
  29. 'message': request.messages.get_message('threads'),
  30. 'forum': self.forum,
  31. 'threads': self.threads,
  32. },
  33. context_instance=RequestContext(request));