ban.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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__ = ["BanMessageSerializer", "BanDetailsSerializer"]
  6. def serialize_message(message):
  7. if message:
  8. return {"plain": message, "html": format_plaintext_for_html(message)}
  9. else:
  10. return None
  11. class BanMessageSerializer(serializers.ModelSerializer):
  12. message = serializers.SerializerMethodField()
  13. class Meta:
  14. model = Ban
  15. fields = ["message", "expires_on"]
  16. def get_message(self, obj):
  17. if obj.user_message:
  18. message = obj.user_message
  19. elif obj.check_type == Ban.IP:
  20. message = _("Your IP address is banned.")
  21. else:
  22. message = _("You are banned.")
  23. return serialize_message(message)
  24. class BanDetailsSerializer(serializers.ModelSerializer):
  25. user_message = serializers.SerializerMethodField()
  26. staff_message = serializers.SerializerMethodField()
  27. class Meta:
  28. model = Ban
  29. fields = ["user_message", "staff_message", "expires_on"]
  30. def get_user_message(self, obj):
  31. return serialize_message(obj.user_message)
  32. def get_staff_message(self, obj):
  33. return serialize_message(obj.staff_message)