From 82cab8e19aff9e3f0aad4ebc7168a4bd241d0efe Mon Sep 17 00:00:00 2001 From: hernani Date: Fri, 14 May 2010 15:34:31 +0000 Subject: [PATCH] Closing OSQA 91. Give admins a way to make users new admins or moderators. git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@276 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum/skins/default/templates/users/info.html | 2 +- .../default/templates/users/moderation.html | 14 ++++++++++++++ forum/templatetags/user_tags.py | 4 ++-- forum/urls.py | 2 +- forum/views/users.py | 18 ++++++++++++++++++ 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/forum/skins/default/templates/users/info.html b/forum/skins/default/templates/users/info.html index 919ab8b..08f006f 100644 --- a/forum/skins/default/templates/users/info.html +++ b/forum/skins/default/templates/users/info.html @@ -31,7 +31,7 @@ {% if view_user != request.user and request.user.is_superuser %} - {% comment %}{% user_moderation request.user view_user %}{% endcomment %} + {% user_moderation request.user view_user %} {% endif %} diff --git a/forum/skins/default/templates/users/moderation.html b/forum/skins/default/templates/users/moderation.html index 8213f18..8def633 100644 --- a/forum/skins/default/templates/users/moderation.html +++ b/forum/skins/default/templates/users/moderation.html @@ -2,3 +2,17 @@

{% trans "Moderation tools" %}

{% trans "Reputation bonus" %}

+{% if not user.is_superuser %} +

{% trans "Grant super user status" %}

+ {% if not user.is_staff %} +

{% trans "Grant moderator status" %}

+ {% else %} +

{% trans "Remove moderator status" %}

+ {% endif %} +{% else %} + {% ifequal moderator.id 1 %} + {% ifnotequal user.id 1 %} +

{% trans "Remove super user status" %}

+ {% endifnotequal %} + {% endifequal %} +{% endif %} diff --git a/forum/templatetags/user_tags.py b/forum/templatetags/user_tags.py index a5d63fe..d69c1bc 100644 --- a/forum/templatetags/user_tags.py +++ b/forum/templatetags/user_tags.py @@ -54,7 +54,7 @@ def activity_item(parser, token): return ActivityNode(activity, viewer) -@register.inclusion_tag('users/action_info.html') +@register.inclusion_tag('users/moderation.html') def user_moderation(moderator, user): - return dict(user=user) + return dict(moderator=moderator, user=user) diff --git a/forum/urls.py b/forum/urls.py index 52336e3..c808bb8 100644 --- a/forum/urls.py +++ b/forum/urls.py @@ -94,7 +94,7 @@ urlpatterns += patterns('', url(r'^%s$' % _('users/'),app.users.users, name='users'), url(r'^%s(?P\d+)/%s$' % (_('users/'), _('edit/')), app.users.edit_user, name='edit_user'), - + url(r'^%s(?P\d+)/%s(?P[a-z]+)/(?P[a-z]+)/$' % (_('users/'), _('powers/')), app.users.user_powers, name='user_powers'), url(r'^%s(?P\d+)/(?P.+)/%s$' % (_('users/'), _('subscriptions/')), app.users.user_subscriptions, name='user_subscriptions'), url(r'^%s(?P\d+)/(?P.+)/%s$' % (_('users/'), _('favorites/')), app.users.user_favorites, name='user_favorites'), url(r'^%s(?P\d+)/(?P.+)/%s$' % (_('users/'), _('reputation/')), app.users.user_reputation, name='user_reputation'), diff --git a/forum/views/users.py b/forum/views/users.py index 0f1c372..3e624ea 100644 --- a/forum/views/users.py +++ b/forum/views/users.py @@ -114,6 +114,24 @@ def edit_user(request, id): }, context_instance=RequestContext(request)) +@login_required +def user_powers(request, id, action, status): + if not request.user.is_superuser: + return HttpResponseForbidden() + + user = get_object_or_404(User, id=id) + new_state = action == 'grant' + + if status == 'super': + user.is_superuser = new_state + elif status == 'staff': + user.is_staff = new_state + else: + raise Http404() + + user.save() + return HttpResponseRedirect(user.get_profile_url()) + def user_view(template, tab_name, tab_description, page_title, private=False): def decorator(fn): -- 2.39.5