Merge pull request #20186 from open-craft/josuebc/upstream/BB-755
BB-755 Check if username is already unicode.
This commit is contained in:
@@ -915,28 +915,12 @@ class LoginFailures(models.Model):
|
||||
except ObjectDoesNotExist:
|
||||
return
|
||||
|
||||
def __repr__(self):
|
||||
"""Repr -> LoginFailures(username, count, date)"""
|
||||
date_str = '-'
|
||||
if self.lockout_until is not None:
|
||||
date_str = self.lockout_until.isoformat()
|
||||
|
||||
return u'LoginFailures({username}, {count}, {date})'.format(
|
||||
username=six.text_type(self.user.username, 'utf-8'),
|
||||
count=self.failure_count,
|
||||
date=date_str
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
"""Str -> Username: count - date."""
|
||||
date_str = '-'
|
||||
if self.lockout_until is not None:
|
||||
date_str = self.lockout_until.isoformat()
|
||||
|
||||
return u'{username}: {count} - {date}'.format(
|
||||
username=six.text_type(self.user.username, 'utf-8'),
|
||||
username=self.user.username,
|
||||
count=self.failure_count,
|
||||
date=date_str
|
||||
date=self.lockout_until.isoformat() if self.lockout_until else '-'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# coding=UTF-8
|
||||
"""
|
||||
Tests student admin.py
|
||||
"""
|
||||
@@ -15,6 +16,7 @@ from django.test import TestCase, override_settings
|
||||
from django.urls import reverse
|
||||
from django.utils.timezone import now
|
||||
from mock import Mock
|
||||
from pytz import UTC
|
||||
|
||||
from student.admin import COURSE_ENROLLMENT_ADMIN_SWITCH, UserAdmin, CourseEnrollmentForm
|
||||
from student.models import CourseEnrollment, LoginFailures
|
||||
@@ -317,22 +319,33 @@ class LoginFailuresAdminTest(TestCase):
|
||||
def setUpClass(cls):
|
||||
"""Setup class"""
|
||||
super(LoginFailuresAdminTest, cls).setUpClass()
|
||||
cls.user = UserFactory.create(is_staff=True, is_superuser=True)
|
||||
cls.user = UserFactory.create(username=u'§', is_staff=True, is_superuser=True)
|
||||
cls.user.save()
|
||||
|
||||
def setUp(self):
|
||||
"""Setup."""
|
||||
super(LoginFailuresAdminTest, self).setUp()
|
||||
self.client.login(username=self.user.username, password='test')
|
||||
user = UserFactory.create()
|
||||
LoginFailures.objects.create(user=self.user, failure_count=10, lockout_until=datetime.datetime.now())
|
||||
LoginFailures.objects.create(user=user, failure_count=2)
|
||||
self.user2 = UserFactory.create(username=u'Zażółć gęślą jaźń')
|
||||
self.user_lockout_until = datetime.datetime.now(UTC)
|
||||
LoginFailures.objects.create(user=self.user, failure_count=10, lockout_until=self.user_lockout_until)
|
||||
LoginFailures.objects.create(user=self.user2, failure_count=2)
|
||||
|
||||
def tearDown(self):
|
||||
"""Tear Down."""
|
||||
super(LoginFailuresAdminTest, self).tearDown()
|
||||
LoginFailures.objects.all().delete()
|
||||
|
||||
def test_unicode_username(self):
|
||||
"""
|
||||
Test if `__str__` method behaves correctly for unicode username.
|
||||
It shouldn't raise `TypeError`.
|
||||
"""
|
||||
self.assertEqual(
|
||||
str(LoginFailures.objects.get(user=self.user)), '§: 10 - {}'.format(self.user_lockout_until.isoformat())
|
||||
)
|
||||
self.assertEqual(str(LoginFailures.objects.get(user=self.user2)), 'Zażółć gęślą jaźń: 2 - -')
|
||||
|
||||
@ddt.data(
|
||||
reverse('admin:student_loginfailures_changelist'),
|
||||
reverse('admin:student_loginfailures_add'),
|
||||
|
||||
Reference in New Issue
Block a user