ban.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from rest_framework import serializers
  2. from django.utils.translation import gettext as _
  3. from misago.core.utils import format_plaintext_for_html
  4. from misago.users.models import Ban
  5. __all__ = [
  6. 'BanMessageSerializer',
  7. 'BanDetailsSerializer',
  8. ]
  9. def serialize_message(message):
  10. if message:
  11. return {
  12. 'plain': message,
  13. 'html': format_plaintext_for_html(message),
  14. }
  15. else:
  16. return None
  17. class BanMessageSerializer(serializers.ModelSerializer):
  18. message = serializers.SerializerMethodField()
  19. class Meta:
  20. model = Ban
  21. fields = [
  22. 'message',
  23. 'expires_on',
  24. ]
  25. def get_message(self, obj):
  26. if obj.user_message:
  27. message = obj.user_message
  28. elif obj.check_type == Ban.IP:
  29. message = _("Your IP address is banned.")
  30. else:
  31. message = _("You are banned.")
  32. return serialize_message(message)
  33. class BanDetailsSerializer(serializers.ModelSerializer):
  34. user_message = serializers.SerializerMethodField()
  35. staff_message = serializers.SerializerMethodField()
  36. class Meta:
  37. model = Ban
  38. fields = [
  39. 'user_message',
  40. 'staff_message',
  41. 'expires_on',
  42. ]
  43. def get_user_message(self, obj):
  44. return serialize_message(obj.user_message)
  45. def get_staff_message(self, obj):
  46. return serialize_message(obj.staff_message)