Allow team owners to remove members.
parent
3a28eacda5
commit
ca39cedc6f
File diff suppressed because one or more lines are too long
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 »</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 »</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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/')
|
||||
|
||||
|
|
Loading…
Reference in New Issue