privatethread.py 831 B

123456789101112131415161718192021222324252627
  1. from misago.acl import add_acl
  2. from misago.categories.models import PRIVATE_THREADS_ROOT_NAME, Category
  3. from . import PostingEndpoint, PostingMiddleware
  4. class PrivateThreadMiddleware(PostingMiddleware):
  5. """
  6. Middleware that sets private threads category for thread and post
  7. """
  8. def use_this_middleware(self):
  9. if self.mode == PostingEndpoint.START:
  10. return self.tree_name == PRIVATE_THREADS_ROOT_NAME
  11. return False
  12. def pre_save(self, serializer):
  13. category = Category.objects.private_threads()
  14. add_acl(self.user, category)
  15. # set flags for savechanges middleware
  16. category.update_all = False
  17. category.update_fields = []
  18. # assign category to thread and post
  19. self.thread.category = category
  20. self.post.category = category