ban.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from django.utils.translation import gettext as _
  2. from rest_framework import serializers
  3. from ...core.utils import format_plaintext_for_html
  4. from ..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. class BanMessageSerializer(serializers.ModelSerializer):
  10. message = serializers.SerializerMethodField()
  11. class Meta:
  12. model = Ban
  13. fields = ["message", "expires_on"]
  14. def get_message(self, obj):
  15. if obj.user_message:
  16. message = obj.user_message
  17. elif obj.check_type == Ban.IP:
  18. message = _("Your IP address is banned.")
  19. else:
  20. message = _("You are banned.")
  21. return serialize_message(message)
  22. class BanDetailsSerializer(serializers.ModelSerializer):
  23. user_message = serializers.SerializerMethodField()
  24. staff_message = serializers.SerializerMethodField()
  25. class Meta:
  26. model = Ban
  27. fields = ["user_message", "staff_message", "expires_on"]
  28. def get_user_message(self, obj):
  29. return serialize_message(obj.user_message)
  30. def get_staff_message(self, obj):
  31. return serialize_message(obj.staff_message)