protect.py 758 B

1234567891011121314151617181920212223
  1. from rest_framework import serializers
  2. from . import PostingEndpoint, PostingMiddleware
  3. class ProtectMiddleware(PostingMiddleware):
  4. def use_this_middleware(self):
  5. return self.mode == PostingEndpoint.EDIT
  6. def get_serializer(self):
  7. return ProtectSerializer(data=self.request.data)
  8. def post_save(self, serializer):
  9. if self.thread.category.acl['can_protect_posts']:
  10. try:
  11. self.post.is_protected = serializer.validated_data.get('protect', False)
  12. self.post.update_fields.append('is_protected')
  13. except (TypeError, ValueError):
  14. pass
  15. class ProtectSerializer(serializers.Serializer):
  16. protect = serializers.BooleanField(required=False, default=False)