Update teams management

Update styling to use Bootstrap 4. Make current user status clear.
Show member name as well as email address.
Make permissions impler to set on team admin form.
This commit is contained in:
Joel Addison 2020-11-29 14:36:56 +10:00
parent bd42d0d997
commit ef148ea482
2 changed files with 59 additions and 46 deletions

View file

@ -4,46 +4,54 @@
{% block head_title %}{{ team.name }}{% endblock %} {% block head_title %}{{ team.name }}{% endblock %}
{% block body_outer %} {% block content %}
<div class="float-right">
{% if can_join %}
<form class="form-horizontal" method="post" action="{% url "team_join" team.slug %}">
{% csrf_token %}
<input type="submit" class="btn btn-primary" value="join">
</form>
{% endif %}
{% if can_leave %}
<form class="form-horizontal" method="post" action="{% url "team_leave" team.slug %}">
{% csrf_token %}
<input type="submit" class="btn btn-secondary" value="leave">
</form>
{% endif %}
{% if can_apply %}
<form class="form-horizontal" method="post" action="{% url "team_apply" team.slug %}">
{% csrf_token %}
<input type="submit" class="btn btn-primary" value="apply">
</form>
{% endif %}
</div>
{% endblock %}
{% block content %}
<div class="jumbotron"> <div class="jumbotron">
<h1>{{ team.name }}{% if state %} <span class="label">{{ state }}</span>{% endif %}</h1> <h1>{{ team.name }}</h1>
{% if team.description %}<p>{{ team.description }}</p>{% endif %} {% if team.description %}<p>{{ team.description }}</p>{% endif %}
{% if state == "invited" %} <div>
<p> <h2>Your Status {% if state %} <span class="badge badge-pill badge-primary">{{ state }}</span>{% endif %}</h2>
You have been invited to join this team. {% if state == "invited" %}
<form class="form-horizontal" method="post" action="{% url "team_join" team.slug %}"> <p>
{% csrf_token %} You have been invited to join this team.
<input type="submit" class="btn btn-primary" value="Accept"> <form class="form-horizontal" method="post" action="{% url "team_join" team.slug %}">
</form> {% csrf_token %}
</p> <input type="submit" class="btn btn-primary" value="Accept">
{% endif %} </form>
</p>
{% endif %}
{% if can_join %}
<p>
You are <strong>not</strong> a member of this team.
<form class="form-horizontal" method="post" action="{% url "team_join" team.slug %}">
{% csrf_token %}
<input type="submit" class="btn btn-primary" value="join">
</form>
</p>
{% endif %}
{% if can_leave %}
<p>
You are a member of this team.
<form class="form-horizontal" method="post" action="{% url "team_leave" team.slug %}">
{% csrf_token %}
<input type="submit" class="btn btn-secondary" value="leave">
</form>
</p>
{% endif %}
{% if can_apply %}
<p>
You are <strong>not</strong> a member of this team.
<form class="form-horizontal" method="post" action="{% url "team_apply" team.slug %}">
{% csrf_token %}
<input type="submit" class="btn btn-primary" value="apply">
</form>
</p>
{% endif %}
</div>
{% if user.is_staff or state == "manager" %} {% if user.is_staff or state == "manager" %}
{% if team.managers %} {% if team.managers %}
@ -51,9 +59,9 @@
<table class="table table-striped"> <table class="table table-striped">
{% for membership in team.managers %} {% for membership in team.managers %}
<tr> <tr>
<td>{{ membership.user.email }}{% if user == membership.user %} <span class="label label-info">you</span>{% endif %}</td> <td>{{ membership.user.get_full_name }} &lt;{{ membership.user.email }}&gt;{% if user == membership.user %} <span class="badge badge-info">you</span>{% endif %}</td>
<td> <td>
<form class="form-horizontal" style="margin: 0;" method="post" action="{% url "team_demote" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">demote</button></form> <form class="form-horizontal" style="margin: 0;" method="post" action="{% url "team_demote" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-sm btn-primary">demote</button></form>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -64,9 +72,9 @@
<table class="table table-striped"> <table class="table table-striped">
{% for membership in team.members %} {% for membership in team.members %}
<tr> <tr>
<td>{{ membership.user.email }}{% if user == membership.user %} <span class="label label-info">you</span>{% endif %}</td> <td>{{ membership.user.get_full_name }} &lt;{{ membership.user.email }}&gt;{% if user == membership.user %} <span class="badge badge-info">you</span>{% endif %}</td>
<td> <td>
<form class="form-horizontal" style="margin: 0;" method="post" action="{% url "team_promote" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">promote</button></form> <form class="form-horizontal" style="margin: 0;" method="post" action="{% url "team_promote" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-sm btn-primary">promote</button></form>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -77,10 +85,10 @@
<table class="table table-striped"> <table class="table table-striped">
{% for membership in team.applicants %} {% for membership in team.applicants %}
<tr> <tr>
<td>{{ membership.user.email }}</td> <td>{{ membership.user.get_full_name }} &lt;{{ membership.user.email }}&gt;</td>
<td> <td>
<form class="form-horizontal" style="margin: 0; float: left;" method="post" action="{% url "team_accept" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">accept</button></form> <form class="form-horizontal" style="margin: 0; float: left;" method="post" action="{% url "team_accept" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-sm btn-primary">accept</button></form>
<form class="form-horizontal" style="margin: 0; float: left;" method="post" action="{% url "team_reject" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">reject</button></form> <form class="form-horizontal" style="margin: 0; float: left;" method="post" action="{% url "team_reject" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-sm btn-secondary">reject</button></form>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -91,7 +99,7 @@
<table class="table table-striped"> <table class="table table-striped">
{% for membership in team.invitees %} {% for membership in team.invitees %}
<tr> <tr>
<td>{{ membership.user.email }}</td> <td>{{ membership.user.get_full_name }} &lt;{{ membership.user.email }}&gt;</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>

View file

@ -4,8 +4,13 @@ from reversion.admin import VersionAdmin
from symposion.teams.models import Team, Membership from symposion.teams.models import Team, Membership
admin.site.register(Team,
prepopulated_fields={"slug": ("name",)}) class TeamAdmin(admin.ModelAdmin):
prepopulated_fields={"slug": ("name",)}
filter_horizontal = ('permissions', 'manager_permissions',)
admin.site.register(Team, TeamAdmin)
class MembershipAdmin(VersionAdmin): class MembershipAdmin(VersionAdmin):