def get_username_options(user): options = UsernameChanges(user) return { 'changes_left': options.left, 'next_on': options.next_on, 'length_min': settings.username_length_min, 'length_max': settings.username_length_max, }
def test_username_changes_helper(self): """username changes are tracked correctly""" User = get_user_model() test_user = User.objects.create_user('Bob', '*****@*****.**', 'pass123') namechanges = UsernameChanges(test_user) self.assertEqual(namechanges.left, 2) self.assertIsNone(namechanges.next_on) self.assertEqual(test_user.namechanges.count(), 0) test_user.set_username('Boberson') test_user.save(update_fields=['username', 'slug']) namechanges = UsernameChanges(test_user) self.assertEqual(namechanges.left, 1) self.assertIsNone(namechanges.next_on) self.assertEqual(test_user.namechanges.count(), 1)
def change_username(request): namechanges = UsernameChanges(request.user) form = ChangeUsernameForm() if request.method == 'POST' and namechanges.left: form = ChangeUsernameForm(request.POST, user=request.user) if form.is_valid(): try: form.change_username(changed_by=request.user) message = _("Your username has been changed.") messages.success(request, message) return redirect('misago:usercp_change_username') except IntegrityError: message = _("Error changing username. Please try again.") messages.error(request, message) return render(request, 'misago/usercp/change_username.html', { 'form': form, 'changes_left': namechanges.left, 'next_change_on': namechanges.next_on })