Browse Source

ban message json for API

Rafał Pitoń 10 years ago
parent
commit
5e797a86df

+ 2 - 19
misago/users/forms/auth.py

@@ -5,6 +5,7 @@ from django.contrib.auth.forms import (AuthenticationForm as
 from django.utils.translation import ugettext_lazy as _
 
 from misago.core import forms
+
 from misago.users.bans import get_user_ban
 from misago.users.validators import validate_password
 
@@ -36,25 +37,7 @@ class MisagoAuthMixin(object):
     def confirm_user_not_banned(self, user):
         self.user_ban = get_user_ban(user)
         if self.user_ban:
-            if self.user_ban.expires_on:
-                if self.user_ban.user_message:
-                    message = _("%(user)s, your account is "
-                                "banned until %(date)s for:")
-                else:
-                    message = _("%(user)s, your account "
-                                "is banned until %(date)s.")
-                date_format = {'date': self.user_ban.formatted_expiration_date}
-                message = message % date_format
-            else:
-                if self.user_ban.user_message:
-                    message = _("%(user)s, your account is banned for:")
-                else:
-                    message = _("%(user)s, your account is banned.")
-
-            raise ValidationError(
-                message % {'user': self.user_cache.username},
-                code='banned',
-            )
+            raise ValidationError('', code='banned')
 
 
 class AuthenticationForm(MisagoAuthMixin, forms.Form, BaseAuthenticationForm):

+ 4 - 0
misago/users/models/ban.py

@@ -110,6 +110,10 @@ class Ban(models.Model):
 
         return super(Ban, self).save(*args, **kwargs)
 
+    def get_serialized_message(self):
+        from misago.users.serializers import BanMessageSerializer
+        return BanMessageSerializer(self).data
+
     @property
     def check_name(self):
         return BANS_CHOICES[self.check_type][1]

+ 1 - 0
misago/users/serializers/__init__.py

@@ -1 +1,2 @@
 from misago.users.serializers.user import *
+from misago.users.serializers.ban import *

+ 23 - 0
misago/users/serializers/ban.py

@@ -0,0 +1,23 @@
+from django.utils.translation import ugettext as _
+
+from rest_framework import serializers
+
+from misago.core.utils import format_plaintext_for_html
+
+from misago.users.models import Ban, BAN_USERNAME, BAN_EMAIL, BAN_IP
+
+
+class BanMessageSerializer(serializers.ModelSerializer):
+    message = serializers.SerializerMethodField()
+
+    class Meta:
+        model = Ban
+        fields = ('message', 'expires_on')
+
+    def get_message(self, obj):
+        message = obj.user_message or _("You are banned.")
+
+        return {
+            'plain': message,
+            'html': format_plaintext_for_html(message)
+        }