ban.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from rest_framework import serializers
  2. from django.utils.translation import ugettext 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 {'plain': message, 'html': format_plaintext_for_html(message)}
  12. else:
  13. return None
  14. class BanMessageSerializer(serializers.ModelSerializer):
  15. message = serializers.SerializerMethodField()
  16. class Meta:
  17. model = Ban
  18. fields = ('message', 'expires_on')
  19. def get_message(self, obj):
  20. if obj.user_message:
  21. message = obj.user_message
  22. elif obj.check_type == Ban.IP:
  23. message = _("Your IP address is banned.")
  24. else:
  25. message = _("You are banned.")
  26. return serialize_message(message)
  27. class BanDetailsSerializer(serializers.ModelSerializer):
  28. user_message = serializers.SerializerMethodField()
  29. staff_message = serializers.SerializerMethodField()
  30. class Meta:
  31. model = Ban
  32. fields = ('user_message', 'staff_message', 'expires_on')
  33. def get_user_message(self, obj):
  34. return serialize_message(obj.user_message)
  35. def get_staff_message(self, obj):
  36. return serialize_message(obj.staff_message)