hide.py 886 B

123456789101112131415161718192021222324252627
  1. from rest_framework import serializers
  2. from misago.threads import moderation
  3. from . import PostingEndpoint, PostingMiddleware
  4. class HideMiddleware(PostingMiddleware):
  5. def use_this_middleware(self):
  6. return self.mode == PostingEndpoint.START
  7. def get_serializer(self):
  8. return HideSerializer(data=self.request.data)
  9. def post_save(self, serializer):
  10. if self.thread.category.acl['can_hide_threads']:
  11. if serializer.validated_data.get('hide'):
  12. moderation.hide_thread(self.request, self.thread)
  13. self.thread.update_all = True
  14. self.thread.save(update_fields=['is_hidden'])
  15. self.thread.category.synchronize()
  16. self.thread.category.update_all = True
  17. class HideSerializer(serializers.Serializer):
  18. hide = serializers.BooleanField(required=False, default=False)