privatethread.py 812 B

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