Allow team owners to remove members.

master
Nick Sergeant 2015-10-17 14:58:43 -04:00
parent 3a28eacda5
commit ca39cedc6f
5 changed files with 51 additions and 31 deletions

File diff suppressed because one or more lines are too long

View File

@ -3093,31 +3093,33 @@ div.team-controller {
}
ul {
margin: 12px 0 0 0;
li {
box-sizing: border-box;
list-style-type: none;
margin: 0;
padding: 10px;
width: 42%;
@include border-radius(3px);
span {
font-size: 16px;
}
a.btn {
float: right;
}
img {
margin-right: 10px;
}
&:last-of-type {
margin-bottom: 0;
}
&:hover {
background: #ebebeb;
}
}
}
}
li.user {
box-sizing: border-box;
list-style-type: none;
margin: 0;
padding: 10px;
width: 42%;
@include border-radius(3px);
span {
font-size: 16px;
}
a.btn {
float: right;
}
img {
margin-right: 10px;
}
&:last-of-type {
margin-bottom: 0;
}
&:hover {
background: #ebebeb;
}
}
ul.member-list {
margin: 0;
}
}

View File

@ -1,5 +1,7 @@
{% extends "base.html" %}
{% load snipt_tags %}
{% block page-title %}Team Members{% endblock %}
{% block body-class %}account {{ block.super }}{% endblock %}
@ -39,7 +41,7 @@
value=""
/>
<ul ng-cloak ng-if="users.length">
<li ng-repeat="user in users">
<li ng-repeat="user in users" class="user">
<img src="https://secure.gravatar.com/avatar/{[{ user.email_md5 }]}?s=26" />
<span>{[{ user.username }]}</span>
<a class="btn btn-small" href="/{{ team.slug }}/members/add/{[{ user.username }]}/">Add &raquo;</a>
@ -47,10 +49,12 @@
</ul>
</div>
<div class="def" data-title="Members ({{ team.members.all|length }} of {{ team.member_limit }})">
<ul style="margin-bottom: 0">
<ul class="member-list">
{% for member in team.members.all %}
<li>
{{ member }}
<li class="user">
<img src="https://secure.gravatar.com/avatar/{{ member.email|md5 }}?s=26" />
<span>{{ member.username }}</span>
<a class="btn btn-small" href="/{{ team.slug }}/members/remove/{{ member.username }}/">Remove &raquo;</a>
</li>
{% endfor %}
</ul>

View File

@ -6,6 +6,9 @@ urlpatterns = \
patterns('',
url(r'^for-teams/$', views.for_teams),
url(r'^for-teams/complete/$', views.for_teams_complete),
url(r'^(?P<username>[^/]+)/members/remove/(?P<member>[^/]+)/$',
views.remove_team_member,
name='remove-team-member'),
url(r'^(?P<username>[^/]+)/members/add/(?P<member>[^/]+)/$',
views.add_team_member,
name='add-team-member'),

View File

@ -45,7 +45,18 @@ def add_team_member(request, username, member):
raise Http404
team.members.add(user)
team.save()
return HttpResponseRedirect('/' + team.slug + '/members/')
def remove_team_member(request, username, member):
team = get_object_or_404(Team, slug=username)
user = get_object_or_404(User, username=member)
if (team.owner != request.user):
raise Http404
team.members.remove(user)
return HttpResponseRedirect('/' + team.slug + '/members/')