pin.py 754 B

123456789101112131415161718192021
  1. from . import PostingEndpoint, PostingMiddleware
  2. from ... import moderation
  3. class PinMiddleware(PostingMiddleware):
  4. def use_this_middleware(self):
  5. return self.mode == PostingEndpoint.START and 'pin' in self.request.data
  6. def post_save(self, serializer):
  7. allowed_pin = self.thread.category.acl['can_pin_threads']
  8. if allowed_pin > 0:
  9. try:
  10. pin = int(self.request.data['pin'])
  11. except (TypeError, ValueError):
  12. pin = 0
  13. if pin <= allowed_pin:
  14. if pin == 2:
  15. moderation.pin_thread_globally(self.request, self.thread)
  16. elif pin == 1:
  17. moderation.pin_thread_locally(self.request, self.thread)