privatethread.py 869 B

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