]> git.openstreetmap.org Git - osqa.git/commitdiff
Closing OSQA 91. Give admins a way to make users new admins or moderators.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Fri, 14 May 2010 15:34:31 +0000 (15:34 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Fri, 14 May 2010 15:34:31 +0000 (15:34 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@276 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/skins/default/templates/users/info.html
forum/skins/default/templates/users/moderation.html
forum/templatetags/user_tags.py
forum/urls.py
forum/views/users.py

index 919ab8b240f889d98bf6551c374ec84347e4e8c5..08f006f589971f20563a629fd07e6a7a44a69bf4 100644 (file)
@@ -31,7 +31,7 @@
                 {% if view_user != request.user and request.user.is_superuser %}
                 <tr>
                     <td class="moderation" align="left" colspan="2">
-                        {% comment %}{% user_moderation request.user view_user %}{% endcomment %}
+                        {% user_moderation request.user view_user %}
                     </td>
                 </tr>
                 {% endif %}
index 8213f187b1fb98374747573fda48316dc38499fb..8def6335a4f0d9e066b62fe3894e7365119f1394 100644 (file)
@@ -2,3 +2,17 @@
 \r
 <h3>{% trans "Moderation tools" %}</h3>\r
 <p><a href="#" class="ajax-command">{% trans "Reputation bonus" %}</a></p>\r
+{% if not user.is_superuser %}\r
+<p><a href="{% url user_powers id=user.id,action="grant",status="super" %}">{% trans "Grant super user status" %}</a></p>\r
+    {% if not user.is_staff %}\r
+    <p><a href="{% url user_powers id=user.id,action="grant",status="staff" %}">{% trans "Grant moderator status" %}</a></p>\r
+    {% else %}\r
+    <p><a href="{% url user_powers id=user.id,action="remove",status="staff" %}" class="">{% trans "Remove moderator status" %}</a></p>\r
+    {% endif %}\r
+{% else %}\r
+    {% ifequal moderator.id 1 %}\r
+        {% ifnotequal user.id 1 %}\r
+            <p><a href="{% url user_powers id=user.id,action="remove",status="super" %}">{% trans "Remove super user status" %}</a></p>\r
+        {% endifnotequal %}\r
+    {% endifequal %}\r
+{% endif %}\r
index a5d63fe136ddebf271427ba2d500077579b49865..d69c1bc50575d64bc53e2759a3cbe946c2b0fb90 100644 (file)
@@ -54,7 +54,7 @@ def activity_item(parser, token):
     return ActivityNode(activity, viewer)\r
 \r
 \r
-@register.inclusion_tag('users/action_info.html')\r
+@register.inclusion_tag('users/moderation.html')\r
 def user_moderation(moderator, user):\r
-    return dict(user=user)\r
+    return dict(moderator=moderator, user=user)\r
 \r
index 52336e312692e0f052c7435ec57f7c42c6053d49..c808bb8375c0becd109c59b6fcc2fa80dd9ec680 100644 (file)
@@ -94,7 +94,7 @@ urlpatterns += patterns('',
 
     url(r'^%s$' % _('users/'),app.users.users, name='users'),
     url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('edit/')), app.users.edit_user, name='edit_user'),
-
+    url(r'^%s(?P<id>\d+)/%s(?P<action>[a-z]+)/(?P<status>[a-z]+)/$' % (_('users/'), _('powers/')), app.users.user_powers, name='user_powers'),
     url(r'^%s(?P<id>\d+)/(?P<slug>.+)/%s$' % (_('users/'), _('subscriptions/')), app.users.user_subscriptions, name='user_subscriptions'),
     url(r'^%s(?P<id>\d+)/(?P<slug>.+)/%s$' % (_('users/'), _('favorites/')), app.users.user_favorites, name='user_favorites'),
     url(r'^%s(?P<id>\d+)/(?P<slug>.+)/%s$' % (_('users/'), _('reputation/')), app.users.user_reputation, name='user_reputation'),
index 0f1c372b7d2601de2d99a5cda864c30ffd6e70a3..3e624ea8a2c9df51bd218084617a2189aaa43229 100644 (file)
@@ -114,6 +114,24 @@ def edit_user(request, id):
                                     }, context_instance=RequestContext(request))\r
 \r
 \r
+@login_required\r
+def user_powers(request, id, action, status):\r
+    if not request.user.is_superuser:\r
+        return HttpResponseForbidden()\r
+\r
+    user = get_object_or_404(User, id=id)\r
+    new_state = action == 'grant'\r
+\r
+    if status == 'super':\r
+        user.is_superuser = new_state\r
+    elif status == 'staff':\r
+        user.is_staff = new_state\r
+    else:\r
+        raise Http404()\r
+\r
+    user.save()    \r
+    return HttpResponseRedirect(user.get_profile_url())\r
+\r
 \r
 def user_view(template, tab_name, tab_description, page_title, private=False):\r
     def decorator(fn):\r