close.py 678 B

12345678910111213141516171819202122
  1. from rest_framework import serializers
  2. from misago.threads import moderation
  3. from . import PostingEndpoint, PostingMiddleware
  4. class CloseMiddleware(PostingMiddleware):
  5. def use_this_middleware(self):
  6. return self.mode == PostingEndpoint.START
  7. def get_serializer(self):
  8. return CloseSerializer(data=self.request.data)
  9. def post_save(self, serializer):
  10. if self.thread.category.acl['can_close_threads']:
  11. if serializer.validated_data.get('close'):
  12. moderation.close_thread(self.request, self.thread)
  13. class CloseSerializer(serializers.Serializer):
  14. close = serializers.BooleanField(required=False, default=False)