12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from django.shortcuts import get_object_or_404
- from misago.acl.objectacl import add_acl_to_obj
- from misago.core.viewmodel import ViewModel as BaseViewModel
- from misago.threads.permissions import exclude_invisible_posts
- __all__ = ["ThreadPost"]
- class ViewModel(BaseViewModel):
- def __init__(self, request, thread, pk):
- model = self.get_post(request, thread, pk)
- add_acl_to_obj(request.user_acl, model)
- self._model = model
- def get_post(self, request, thread, pk):
- try:
- thread_model = thread.unwrap()
- except AttributeError:
- thread_model = thread
- queryset = self.get_queryset(request, thread_model).select_related(
- "poster", "poster__rank", "poster__ban_cache"
- )
- post = get_object_or_404(queryset, pk=pk)
- post.thread = thread_model
- post.category = thread.category
- return post
- def get_queryset(self, request, thread):
- return exclude_invisible_posts(
- request.user_acl, thread.category, thread.post_set
- )
- class ThreadPost(ViewModel):
- pass
|