|
@@ -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
|