Mercurial > hg > savane-forge
changeset 247:8da7cf2b1859
Don't display me as a project admin in membership management when I'm 'just' a superuser
author | Sylvain Beucler <beuc@beuc.net> |
---|---|
date | Sun, 08 Aug 2010 19:12:33 +0200 |
parents | dd181f68dae4 |
children | 5e7ba81027a4 |
files | savane/svmain/models.py savane/svmain/templatetags/svmembership.py savane/svmain/views.py templates/svmain/group_admin_members.html |
diffstat | 4 files changed, 45 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/savane/svmain/models.py +++ b/savane/svmain/models.py @@ -664,6 +664,13 @@ .filter(user=user, group=group, admin_flags='A').count() > 0)) @staticmethod + def is_nonsuper_admin(user, group): + return (not user.is_anonymous() + and Membership.is_member(user, group) + and Membership.objects + .filter(user=user, group=group, admin_flags='A').count() > 0) + + @staticmethod def tidy(user=None, group=None): """ If using a non-Savane users&groups base, create missing
new file mode 100644 --- /dev/null +++ b/savane/svmain/templatetags/svmembership.py @@ -0,0 +1,30 @@ +# Request membership properties +# Copyright (C) 2010 Sylvain Beucler +# +# This file is part of Savane. +# +# Savane is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# Savane is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from django import template +import savane.svmain.models as svmain_models + +register = template.Library() + +@register.filter +def is_user_nonsuper_admin(user, group): + """ + Return if the user is admin of this group (do not take superuser + privs in account) + """ + return svmain_models.Membership.is_nonsuper_admin(user, group)
--- a/savane/svmain/views.py +++ b/savane/svmain/views.py @@ -252,7 +252,9 @@ context = {} context.update(extra_context) context.update({'group' : group}) - queryset = auth_models.User.objects.filter(is_active=True).exclude(pk__in=group.user_set.all()) + queryset = auth_models.User.objects.filter(is_active=True) \ + .exclude(pk__in=group.user_set.all()) \ + .order_by('username') return search(object_list)(request, queryset=queryset, paginate_by=20,
--- a/templates/svmain/group_admin_members.html +++ b/templates/svmain/group_admin_members.html @@ -25,11 +25,12 @@ <<a href="{% url savane:svmain:user_detail membership.user.username %}">{{ membership.user.username }}</a>> </td> <td> - {% ifequal request.user membership.user %} + {% load svmembership %} + {% if request.user|is_user_nonsuper_admin:group %} <em>{% trans "You are Admin" %}</em> {% else %} <input type="checkbox" name="admin_{{membership.pk}}" {% ifequal membership.admin_flags "A" %}checked="checked"{% endifequal %}/> - {% endifequal %} + {% endif %} </td> <td> {% ifequal request.user membership.user %} @@ -43,10 +44,10 @@ <h2>{% trans "Requests for inclusion" %}</h2> {% if pending_memberships %} - <table> + <table class="box"> <tr><th>{% trans "User" %}</th><th>{% trans "Approve" %}</th><th>{% trans "Reject" %}</th></tr> {% for membership in pending_memberships %} - <tr> + <tr class="{% cycle 'boxitem' 'boxitemalt' %}"> <td>{{ membership.user.get_full_name }} <{{ membership.user.username }}></td> <td><input type="checkbox" name="approve_{{membership.pk}}" /></td> <td><input type="checkbox" name="reject_{{membership.pk}}" /></td>