ban.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from django.utils.translation import ugettext as _
  2. from rest_framework import serializers
  3. from misago.core.utils import format_plaintext_for_html
  4. from misago.users.models import BAN_IP, 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 = ('message', 'expires_on')
  22. def get_message(self, obj):
  23. if obj.user_message:
  24. message = obj.user_message
  25. elif obj.check_type == BAN_IP:
  26. message = _("Your IP address is banned.")
  27. else:
  28. message = _("You are banned.")
  29. return serialize_message(message)
  30. class BanDetailsSerializer(serializers.ModelSerializer):
  31. user_message = serializers.SerializerMethodField()
  32. staff_message = serializers.SerializerMethodField()
  33. class Meta:
  34. model = Ban
  35. fields = ('user_message', 'staff_message', 'expires_on')
  36. def get_user_message(self, obj):
  37. return serialize_message(obj.user_message)
  38. def get_staff_message(self, obj):
  39. return serialize_message(obj.staff_message)