|
@@ -1,6 +1,6 @@
|
|
from django.contrib import messages
|
|
from django.contrib import messages
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth import get_user_model
|
|
-from django.db import transaction
|
|
|
|
|
|
+from django.db import IntegrityError, transaction
|
|
from django.shortcuts import redirect, render
|
|
from django.shortcuts import redirect, render
|
|
from django.utils.translation import ugettext as _
|
|
from django.utils.translation import ugettext as _
|
|
|
|
|
|
@@ -8,9 +8,11 @@ from misago.acl import add_acl
|
|
from misago.core.decorators import require_POST
|
|
from misago.core.decorators import require_POST
|
|
from misago.core.shortcuts import get_object_or_404, validate_slug
|
|
from misago.core.shortcuts import get_object_or_404, validate_slug
|
|
|
|
|
|
-from misago.users.forms.usercp import ChangeUsernameForm
|
|
|
|
|
|
+from misago.users.forms.rename import ChangeUsernameForm
|
|
from misago.users.decorators import deny_guests
|
|
from misago.users.decorators import deny_guests
|
|
-from misago.users.permissions.moderation import allow_rename_user
|
|
|
|
|
|
+from misago.users.permissions.moderation import (allow_rename_user,
|
|
|
|
+ allow_ban_username,
|
|
|
|
+ allow_ban_email)
|
|
from misago.users.permissions.delete import allow_delete_user
|
|
from misago.users.permissions.delete import allow_delete_user
|
|
from misago.users.sites import user_profile
|
|
from misago.users.sites import user_profile
|
|
|
|
|
|
@@ -42,6 +44,50 @@ def rename(request, user):
|
|
old_username = user.username
|
|
old_username = user.username
|
|
form = ChangeUsernameForm(request.POST, user=user)
|
|
form = ChangeUsernameForm(request.POST, user=user)
|
|
if form.is_valid():
|
|
if form.is_valid():
|
|
|
|
+ try:
|
|
|
|
+ form.change_username(changed_by=request.user)
|
|
|
|
+ message = _("%(old_username)s's username has been changed.")
|
|
|
|
+ message = message % {'old_username': old_username}
|
|
|
|
+ messages.success(request, message)
|
|
|
|
+
|
|
|
|
+ return redirect(user_profile.get_default_link(),
|
|
|
|
+ **{'user_slug': user.slug, 'user_id': user.pk})
|
|
|
|
+ except IntegrityError:
|
|
|
|
+ message = _("Error changing username. Please try again.")
|
|
|
|
+ messages.error(request, message)
|
|
|
|
+
|
|
|
|
+ return render(request, 'misago/modusers/rename.html',
|
|
|
|
+ {'profile': user, 'form': form})
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@user_moderation_view(allow_ban_username)
|
|
|
|
+def ban_username(request, user):
|
|
|
|
+ form = ChangeUsernameForm(user=user)
|
|
|
|
+ if request.method == 'POST':
|
|
|
|
+ old_username = user.username
|
|
|
|
+ form = ChangeUsernameForm(request.POST, user=user)
|
|
|
|
+ if form.is_valid():
|
|
|
|
+ user.set_username(form.cleaned_data['new_username'],
|
|
|
|
+ changed_by=request.user)
|
|
|
|
+ user.save(update_fields=['username', 'slug'])
|
|
|
|
+
|
|
|
|
+ message = _("%(old_username)s's username has been changed.")
|
|
|
|
+ messages.success(request, message % {'old_username': old_username})
|
|
|
|
+
|
|
|
|
+ return redirect(user_profile.get_default_link(),
|
|
|
|
+ **{'user_slug': user.slug, 'user_id': user.pk})
|
|
|
|
+
|
|
|
|
+ return render(request, 'misago/modusers/rename.html',
|
|
|
|
+ {'profile': user, 'form': form})
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@user_moderation_view(allow_ban_email)
|
|
|
|
+def ban_email(request, user):
|
|
|
|
+ form = ChangeUsernameForm(user=user)
|
|
|
|
+ if request.method == 'POST':
|
|
|
|
+ old_username = user.username
|
|
|
|
+ form = ChangeUsernameForm(request.POST, user=user)
|
|
|
|
+ if form.is_valid():
|
|
user.set_username(form.cleaned_data['new_username'],
|
|
user.set_username(form.cleaned_data['new_username'],
|
|
changed_by=request.user)
|
|
changed_by=request.user)
|
|
user.save(update_fields=['username', 'slug'])
|
|
user.save(update_fields=['username', 'slug'])
|