ban.py 1.4 KB

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