privatethread.py 861 B

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