base.py 1.4 KB

12345678910111213141516171819202122232425262728
  1. from django.core.urlresolvers import reverse
  2. from django.shortcuts import redirect
  3. from misago.models import Forum, Thread, Post
  4. from misago.utils.pagination import make_pagination
  5. class ViewBase(object):
  6. def __new__(cls, request, **kwargs):
  7. obj = super(ViewBase, cls).__new__(cls)
  8. return obj(request, **kwargs)
  9. def set_forum_context(self):
  10. pass
  11. def set_thread_context(self):
  12. self.thread = Thread.objects.get(pk=self.kwargs.get('thread'))
  13. self.forum = self.thread.forum
  14. self.proxy = Forum.objects.parents_aware_forum(self.forum)
  15. self.request.acl.forums.allow_forum_view(self.forum)
  16. self.request.acl.threads.allow_thread_view(self.request.user, self.thread)
  17. def set_post_contex(self):
  18. pass
  19. def redirect_to_post(self, post):
  20. pagination = make_pagination(0, self.request.acl.threads.filter_posts(self.request, self.thread, self.thread.post_set).filter(id__lte=post.pk).count(), self.request.settings.posts_per_page)
  21. if pagination['total'] > 1:
  22. return redirect(reverse(self.thread_url, kwargs={'thread': self.thread.pk, 'slug': self.thread.slug, 'page': pagination['total']}) + ('#post-%s' % post.pk))
  23. return redirect(reverse(self.thread_url, kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % post.pk))