list.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. try:
  13. self.forum = Forum.objects.get(pk=forum, type='forum')
  14. self.request.acl.forums.check_forum(self.forum)
  15. except Forum.DoesNotExist:
  16. return error404(self.request)
  17. except ACLError404 as e:
  18. return error404(self.request, e.message)
  19. except ACLError403 as e:
  20. return error403(self.request, e.message)
  21. def fetch_threads(self, page):
  22. self.threads = Thread.objects.filter(forum=self.forum).order_by('-last').all()
  23. def __call__(self, request, slug=None, forum=None, page=0):
  24. self.request = request
  25. try:
  26. self.fetch_forum(forum)
  27. self.fetch_threads(page)
  28. except ACLError403 as e:
  29. return error403(args[0], e.message)
  30. except ACLError404 as e:
  31. return error404(args[0], e.message)
  32. return request.theme.render_to_response('threads/list.html',
  33. {
  34. 'message': request.messages.get_message('threads'),
  35. 'forum': self.forum,
  36. 'threads': self.threads,
  37. },
  38. context_instance=RequestContext(request));