Просмотр исходного кода

further bans constants refactoring

Rafał Pitoń 8 лет назад
Родитель
Сommit
894348e917

+ 1 - 1
misago/core/errorpages.py

@@ -24,7 +24,7 @@ def _error_page(request, code, message=None):
 
 def banned(request, ban):
     request.frontend_context.update({
-        'BAN_MESSAGE': ban.get_serialized_message(),
+        'MESSAGE': ban.get_serialized_message(),
         'CURRENT_LINK': 'misago:error-banned'
     })
 

+ 4 - 4
misago/faker/management/commands/createfakebans.py

@@ -69,11 +69,11 @@ def fake_ip_ban(fake):
 
 
 def create_fake_test(fake, test_type):
-    if test_type == Ban.BAN_USERNAME:
+    if test_type == Ban.USERNAME:
         return fake_username_ban(fake)
-    elif test_type == Ban.BAN_EMAIL:
+    elif test_type == Ban.EMAIL:
         return fake_email_ban(fake)
-    elif test_type == Ban.BAN_IP:
+    elif test_type == Ban.IP:
         return fake_ip_ban(fake)
 
 
@@ -99,7 +99,7 @@ class Command(BaseCommand):
         created_count = 0
         show_progress(self, created_count, fake_bans_to_create)
         for i in range(fake_bans_to_create):
-            ban = Ban(check_type=random.randint(Ban.BAN_USERNAME, Ban.BAN_IP))
+            ban = Ban(check_type=random.randint(Ban.USERNAME, Ban.IP))
             ban.banned_value = create_fake_test(fake, ban.check_type)
 
             if random.randint(0, 10) == 0:

+ 1 - 1
misago/users/api/rest_permissions.py

@@ -20,7 +20,7 @@ class UnbannedOnly(BasePermission):
         ban = get_request_ip_ban(request)
         if ban:
             hydrated_ban = Ban(
-                check_type=Ban.BAN_IP,
+                check_type=Ban.IP,
                 user_message=ban['message'],
                 expires_on=ban['expires_on'])
             raise Banned(hydrated_ban)

+ 11 - 11
misago/users/bans.py

@@ -15,8 +15,8 @@ from misago.core import cachebuster
 from .models import Ban, BanCache
 
 
-BAN_CACHE_SESSION_KEY = 'misago_ip_check'
-BAN_VERSION_KEY = 'misago_bans'
+CACHE_SESSION_KEY = 'misago_ip_check'
+VERSION_KEY = 'misago_bans'
 
 
 def get_username_ban(username):
@@ -64,7 +64,7 @@ def get_user_ban(user):
 
 def _set_user_ban_cache(user):
     ban_cache = user.ban_cache
-    ban_cache.bans_version = cachebuster.get_version(BAN_VERSION_KEY)
+    ban_cache.bans_version = cachebuster.get_version(VERSION_KEY)
 
     try:
         user_ban = Ban.objects.get_ban(
@@ -102,8 +102,8 @@ def get_request_ip_ban(request):
 
     found_ban = get_ip_ban(request.user_ip)
 
-    ban_cache = request.session[BAN_CACHE_SESSION_KEY] = {
-        'version': cachebuster.get_version(BAN_VERSION_KEY),
+    ban_cache = request.session[CACHE_SESSION_KEY] = {
+        'version': cachebuster.get_version(VERSION_KEY),
         'ip': request.user_ip,
     }
 
@@ -117,21 +117,21 @@ def get_request_ip_ban(request):
                 'is_banned': True,
                 'message': found_ban.user_message
             })
-        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
-        return _hydrate_session_cache(request.session[BAN_CACHE_SESSION_KEY])
+        request.session[CACHE_SESSION_KEY] = ban_cache
+        return _hydrate_session_cache(request.session[CACHE_SESSION_KEY])
     else:
         ban_cache['is_banned'] = False
-        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
+        request.session[CACHE_SESSION_KEY] = ban_cache
         return None
 
 
 def _get_session_bancache(request):
     try:
-        ban_cache = request.session[BAN_CACHE_SESSION_KEY]
+        ban_cache = request.session[CACHE_SESSION_KEY]
         ban_cache = _hydrate_session_cache(ban_cache)
         if ban_cache['ip'] != request.user_ip:
             return None
-        if not cachebuster.is_valid(BAN_VERSION_KEY, ban_cache['version']):
+        if not cachebuster.is_valid(VERSION_KEY, ban_cache['version']):
             return None
         if ban_cache.get('expires_on'):
             """
@@ -177,7 +177,7 @@ def ban_ip(ip, user_message=None, staff_message=None, length=None,
         expires_on = timezone.now() + timedelta(**length)
 
     ban = Ban.objects.create(
-        check_type=Ban.BAN_IP,
+        check_type=Ban.IP,
         banned_value=ip,
         user_message=user_message,
         staff_message=staff_message,

+ 1 - 0
misago/users/constants.py

@@ -0,0 +1 @@
+BANS_CACHEBUSTER = 'misago_bans'

+ 1 - 1
misago/users/decorators.py

@@ -33,7 +33,7 @@ def deny_banned_ips(f):
         ban = get_request_ip_ban(request)
         if ban:
             hydrated_ban = Ban(
-                check_type=Ban.BAN_IP,
+                check_type=Ban.IP,
                 user_message=ban['message'],
                 expires_on=ban['expires_on']
             )

+ 3 - 3
misago/users/forms/admin.py

@@ -489,7 +489,7 @@ class BanForm(forms.ModelForm):
     check_type = forms.TypedChoiceField(
         label=_("Check type"),
         coerce=int,
-        choices=Ban.BANS_CHOICES
+        choices=Ban.CHOICES
     )
     banned_value = forms.CharField(
         label=_("Banned value"),
@@ -552,7 +552,7 @@ class BanForm(forms.ModelForm):
 
 
 class SearchBansForm(forms.Form):
-    SARCH_BANS_CHOICES = (
+    SARCH_CHOICES = (
         ('', _('All bans')),
         ('names', _('Usernames')),
         ('emails', _('E-mails')),
@@ -562,7 +562,7 @@ class SearchBansForm(forms.Form):
     check_type = forms.ChoiceField(
         label=_("Type"),
         required=False,
-        choices=SARCH_BANS_CHOICES
+        choices=SARCH_CHOICES
     )
     value = forms.CharField(
         label=_("Banned value begins with"),

+ 3 - 1
misago/users/migrations/0003_bans_version_tracker.py

@@ -5,9 +5,11 @@ from django.db import migrations, models
 
 from misago.core.migrationutils import cachebuster_register_cache
 
+from misago.users.constants import BANS_CACHEBUSTER
+
 
 def register_bans_version_tracker(apps, schema_editor):
-    cachebuster_register_cache(apps, 'misago_bans')
+    cachebuster_register_cache(apps, BANS_CACHEBUSTER)
 
 
 class Migration(migrations.Migration):

+ 20 - 21
misago/users/models/ban.py

@@ -7,8 +7,7 @@ from django.utils.translation import ugettext_lazy as _
 
 from misago.core import cachebuster
 
-
-BAN_CACHEBUSTER = 'misago_bans'
+from misago.users.constants import BANS_CACHEBUSTER
 
 
 class BansManager(models.Manager):
@@ -22,19 +21,19 @@ class BansManager(models.Manager):
         return self.get_ban(email=email)
 
     def invalidate_cache(self):
-        cachebuster.invalidate(BAN_CACHEBUSTER)
+        cachebuster.invalidate(BANS_CACHEBUSTER)
 
     def get_ban(self, username=None, email=None, ip=None):
         checks = []
 
         if username:
             username = username.lower()
-            checks.append(self.model.BAN_USERNAME)
+            checks.append(self.model.USERNAME)
         if email:
             email = email.lower()
-            checks.append(self.model.BAN_EMAIL)
+            checks.append(self.model.EMAIL)
         if ip:
-            checks.append(self.model.BAN_IP)
+            checks.append(self.model.IP)
 
         queryset = self.filter(is_checked=True)
         if len(checks) == 1:
@@ -45,30 +44,30 @@ class BansManager(models.Manager):
         for ban in queryset.order_by('-id').iterator():
             if ban.is_expired:
                 continue
-            elif (ban.check_type == self.model.BAN_USERNAME and username and
+            elif (ban.check_type == self.model.USERNAME and username and
                     ban.check_value(username)):
                 return ban
-            elif (ban.check_type == self.model.BAN_EMAIL and email and
+            elif (ban.check_type == self.model.EMAIL and email and
                     ban.check_value(email)):
                 return ban
-            elif ban.check_type == self.model.BAN_IP and ip and ban.check_value(ip):
+            elif ban.check_type == self.model.IP and ip and ban.check_value(ip):
                 return ban
         else:
             raise Ban.DoesNotExist('specified values are not banned')
 
 
 class Ban(models.Model):
-    BAN_USERNAME = 0
-    BAN_EMAIL = 1
-    BAN_IP = 2
-
-    BANS_CHOICES = (
-        (BAN_USERNAME, _('Username')),
-        (BAN_EMAIL, _('E-mail address')),
-        (BAN_IP, _('IP address')),
+    USERNAME = 0
+    EMAIL = 1
+    IP = 2
+
+    CHOICES = (
+        (USERNAME, _('Username')),
+        (EMAIL, _('E-mail address')),
+        (IP, _('IP address')),
     )
 
-    check_type = models.PositiveIntegerField(default=BAN_USERNAME, db_index=True)
+    check_type = models.PositiveIntegerField(default=USERNAME, db_index=True)
     banned_value = models.CharField(max_length=255, db_index=True)
     user_message = models.TextField(null=True, blank=True)
     staff_message = models.TextField(null=True, blank=True)
@@ -89,7 +88,7 @@ class Ban(models.Model):
 
     @property
     def check_name(self):
-        return self.BANS_CHOICES[self.check_type][1]
+        return self.CHOICES[self.check_type][1]
 
     @property
     def name(self):
@@ -131,7 +130,7 @@ class BanCache(models.Model):
         from ..serializers import BanMessageSerializer
         temp_ban = Ban(
             id=1,
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             user_message=self.user_message,
             staff_message=self.staff_message,
             expires_on=self.expires_on
@@ -144,7 +143,7 @@ class BanCache(models.Model):
 
     @property
     def is_valid(self):
-        version_is_valid = cachebuster.is_valid(BAN_CACHEBUSTER, self.bans_version)
+        version_is_valid = cachebuster.is_valid(BANS_CACHEBUSTER, self.bans_version)
         expired = self.expires_on and self.expires_on < timezone.now()
 
         return version_is_valid and not expired

+ 3 - 3
misago/users/permissions/profiles.py

@@ -25,7 +25,7 @@ CAN_SEARCH_USERS = YesNoSwitch(
 CAN_SEE_USER_NAME_HISTORY = YesNoSwitch(
     label=_("Can see other members name history")
 )
-CAN_SEE_BAN_DETAILS = YesNoSwitch(
+CAN_SEE_DETAILS = YesNoSwitch(
     label=_("Can see members bans details"),
     help_text=_("Allows users with this permission to see user and staff ban messages.")
 )
@@ -37,7 +37,7 @@ class LimitedPermissionsForm(forms.Form):
     can_browse_users_list = CAN_BROWSE_USERS_LIST
     can_search_users = CAN_SEARCH_USERS
     can_see_users_name_history = CAN_SEE_USER_NAME_HISTORY
-    can_see_ban_details = CAN_SEE_BAN_DETAILS
+    can_see_ban_details = CAN_SEE_DETAILS
 
 
 class PermissionsForm(LimitedPermissionsForm):
@@ -52,7 +52,7 @@ class PermissionsForm(LimitedPermissionsForm):
         initial=0
     )
     can_see_users_name_history = CAN_SEE_USER_NAME_HISTORY
-    can_see_ban_details = CAN_SEE_BAN_DETAILS
+    can_see_ban_details = CAN_SEE_DETAILS
     can_see_users_emails = YesNoSwitch(
         label=_("Can see members e-mails")
     )

+ 1 - 1
misago/users/serializers/ban.py

@@ -33,7 +33,7 @@ class BanMessageSerializer(serializers.ModelSerializer):
     def get_message(self, obj):
         if obj.user_message:
             message = obj.user_message
-        elif obj.check_type == Ban.BAN_IP:
+        elif obj.check_type == Ban.IP:
             message = _("Your IP address is banned.")
         else:
             message = _("You are banned.")

+ 1 - 1
misago/users/tests/test_activation_views.py

@@ -20,7 +20,7 @@ class ActivationViewsTests(TestCase):
         test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
                                              requires_activation=1)
         Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value='bob',
             user_message='Nope!',
         )

+ 5 - 5
misago/users/tests/test_auth_api.py

@@ -51,7 +51,7 @@ class GatewayTests(TestCase):
         User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
 
         ban = Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value='bob',
             user_message='You are tragically banned.',
         )
@@ -84,7 +84,7 @@ class GatewayTests(TestCase):
         user.save()
 
         ban = Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value='bob',
             user_message='You are tragically banned.',
         )
@@ -192,7 +192,7 @@ class SendActivationAPITests(TestCase):
     def test_submit_banned(self):
         """request activation link api passes for banned users"""
         Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value=self.user.username,
             user_message='Nope!',
         )
@@ -271,7 +271,7 @@ class SendPasswordFormAPITests(TestCase):
     def test_submit_banned(self):
         """request change password form link api sends reset link mail"""
         Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value=self.user.username,
             user_message='Nope!',
         )
@@ -352,7 +352,7 @@ class ChangePasswordAPITests(TestCase):
     def test_banned_user_link(self):
         """request errors because user is banned"""
         Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value=self.user.username,
             user_message='Nope!',
         )

+ 3 - 3
misago/users/tests/test_ban_model.py

@@ -8,15 +8,15 @@ class BansManagerTests(TestCase):
     def setUp(self):
         Ban.objects.bulk_create([
             Ban(
-                check_type=Ban.BAN_USERNAME,
+                check_type=Ban.USERNAME,
                 banned_value='bob'
             ),
             Ban(
-                check_type=Ban.BAN_EMAIL,
+                check_type=Ban.EMAIL,
                 banned_value='bob@test.com'
             ),
             Ban(
-                check_type=Ban.BAN_IP,
+                check_type=Ban.IP,
                 banned_value='127.0.0.1'
             ),
         ])

+ 10 - 10
misago/users/tests/test_bans.py

@@ -26,7 +26,7 @@ class GetBanTests(TestCase):
 
         Ban.objects.create(
             banned_value='wrongtype',
-            check_type=Ban.BAN_EMAIL
+            check_type=Ban.EMAIL
         )
 
         wrong_type_ban = get_username_ban('wrongtype')
@@ -45,7 +45,7 @@ class GetBanTests(TestCase):
 
         Ban.objects.create(
             banned_value='ex@pired.com',
-            check_type=Ban.BAN_EMAIL,
+            check_type=Ban.EMAIL,
             expires_on=timezone.now() - timedelta(days=7)
         )
 
@@ -54,7 +54,7 @@ class GetBanTests(TestCase):
 
         Ban.objects.create(
             banned_value='wrong@type.com',
-            check_type=Ban.BAN_IP
+            check_type=Ban.IP
         )
 
         wrong_type_ban = get_email_ban('wrong@type.com')
@@ -62,7 +62,7 @@ class GetBanTests(TestCase):
 
         valid_ban = Ban.objects.create(
             banned_value='*.ru',
-            check_type=Ban.BAN_EMAIL,
+            check_type=Ban.EMAIL,
             expires_on=timezone.now() + timedelta(days=7)
         )
         self.assertEqual(get_email_ban('banned@mail.ru').pk, valid_ban.pk)
@@ -74,7 +74,7 @@ class GetBanTests(TestCase):
 
         Ban.objects.create(
             banned_value='124.0.0.1',
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             expires_on=timezone.now() - timedelta(days=7)
         )
 
@@ -83,7 +83,7 @@ class GetBanTests(TestCase):
 
         Ban.objects.create(
             banned_value='wrongtype',
-            check_type=Ban.BAN_EMAIL
+            check_type=Ban.EMAIL
         )
 
         wrong_type_ban = get_ip_ban('wrongtype')
@@ -91,7 +91,7 @@ class GetBanTests(TestCase):
 
         valid_ban = Ban.objects.create(
             banned_value='125.0.0.*',
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             expires_on=timezone.now() + timedelta(days=7)
         )
         self.assertEqual(get_ip_ban('125.0.0.1').pk, valid_ban.pk)
@@ -175,7 +175,7 @@ class RequestIPBansTests(TestCase):
     def test_permanent_ban(self):
         """ip is caught by permanent ban"""
         Ban.objects.create(
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             banned_value='127.0.0.1',
             user_message='User reason'
         )
@@ -191,7 +191,7 @@ class RequestIPBansTests(TestCase):
     def test_temporary_ban(self):
         """ip is caught by temporary ban"""
         Ban.objects.create(
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             banned_value='127.0.0.1',
             user_message='User reason',
             expires_on=timezone.now() + timedelta(days=7)
@@ -208,7 +208,7 @@ class RequestIPBansTests(TestCase):
     def test_expired_ban(self):
         """ip is not caught by expired ban"""
         Ban.objects.create(
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             banned_value='127.0.0.1',
             user_message='User reason',
             expires_on=timezone.now() - timedelta(days=7)

+ 2 - 2
misago/users/tests/test_decorators.py

@@ -38,7 +38,7 @@ class DenyBannedIPTests(UserTestCase):
     def test_success(self):
         """deny_banned_ips decorator allowed unbanned request"""
         Ban.objects.create(
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             banned_value='83.*',
             user_message="Ya got banned!"
         )
@@ -49,7 +49,7 @@ class DenyBannedIPTests(UserTestCase):
     def test_fail(self):
         """deny_banned_ips decorator denied banned request"""
         Ban.objects.create(
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             banned_value='127.*',
             user_message="Ya got banned!"
         )

+ 1 - 1
misago/users/tests/test_forgottenpassword_views.py

@@ -27,7 +27,7 @@ class ForgottenPasswordViewsTests(UserTestCase):
         test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
 
         Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value='bob',
             user_message='Nope!',
         )

+ 2 - 2
misago/users/tests/test_rest_permissions.py

@@ -29,7 +29,7 @@ class UnbannedOnlyTests(UserTestCase):
     def test_api_blocks_banned(self):
         """policy blocked banned ip"""
         Ban.objects.create(
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             banned_value='127.*',
             user_message='Ya got banned!'
         )
@@ -69,7 +69,7 @@ class UnbannedAnonOnlyTests(UserTestCase):
     def test_api_blocks_banned(self):
         """policy blocked banned ip"""
         Ban.objects.create(
-            check_type=Ban.BAN_IP,
+            check_type=Ban.IP,
             banned_value='127.*',
             user_message='Ya got banned!'
         )

+ 1 - 1
misago/users/tests/test_users_api.py

@@ -440,7 +440,7 @@ class UserBanTests(AuthenticatedUserTestCase):
         })
 
         Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value=self.other_user.username,
             user_message='Nope!'
         )

+ 2 - 2
misago/users/tests/test_validators.py

@@ -40,7 +40,7 @@ class ValidateEmailAvailableTests(TestCase):
 class ValidateEmailBannedTests(TestCase):
     def setUp(self):
         Ban.objects.create(
-            check_type=Ban.BAN_EMAIL,
+            check_type=Ban.EMAIL,
             banned_value="ban@test.com"
         )
 
@@ -91,7 +91,7 @@ class ValidateUsernameAvailableTests(TestCase):
 class ValidateUsernameBannedTests(TestCase):
     def setUp(self):
         Ban.objects.create(
-            check_type=Ban.BAN_USERNAME,
+            check_type=Ban.USERNAME,
             banned_value="Bob"
         )
 

+ 5 - 5
misago/users/views/admin/users.py

@@ -144,25 +144,25 @@ class UsersList(UserAdmin, generic.ListView):
                 for user in users:
                     for ban in cleaned_data['ban_type']:
                         if ban == 'usernames':
-                            check_type = Ban.BAN_USERNAME
+                            check_type = Ban.USERNAME
                             banned_value = user.username.lower()
 
                         if ban == 'emails':
-                            check_type = Ban.BAN_EMAIL
+                            check_type = Ban.EMAIL
                             banned_value = user.email.lower()
 
                         if ban == 'domains':
-                            check_type = Ban.BAN_EMAIL
+                            check_type = Ban.EMAIL
                             banned_value = user.email.lower()
                             at_pos = banned_value.find('@')
                             banned_value = '*%s' % banned_value[at_pos:]
 
                         if ban == 'ip':
-                            check_type = Ban.BAN_IP
+                            check_type = Ban.IP
                             banned_value = user.joined_from_ip
 
                         if ban in ('ip_first', 'ip_two'):
-                            check_type = Ban.BAN_IP
+                            check_type = Ban.IP
 
                             if ':' in user.joined_from_ip:
                                 ip_separator = ':'