Add group leader functionality and update group member management
- Create GroupLeader model and migration - Alter GroupLeader member field to include related_name - Implement is_leader and is_owner methods in Group model - Update GroupDetailView to pass leader and owner status to template - Refactor group buttons and members display into separate templates - Add view and URL for setting group leaders - Update permissions for adding/removing members and clearing blacklist - Bump version to 0.1.1 in uv.lock
This commit is contained in:
parent
6cd9c0c841
commit
7409b4cd8f
10 changed files with 244 additions and 101 deletions
|
@ -9,30 +9,7 @@
|
|||
{% endif %}
|
||||
{{ group.name }}
|
||||
</h1>
|
||||
{% if group.owner == user %}
|
||||
<p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<p>
|
||||
<a href="{% url "start_game" pk=group.pk %}" role="button"><i class="ri-play-fill"></i> Jouer</a>
|
||||
</p>
|
||||
<div role="group">
|
||||
<a href="{% url "group_update" pk=group.pk %}"
|
||||
class="secondary"
|
||||
role="button"><i class="ri-edit-line"></i> Renommer</a>
|
||||
<button type="submit"
|
||||
class="secondary"
|
||||
formaction="{% url "group_clear_blacklist" pk=group.pk %}">
|
||||
<i class="ri-history-fill"></i> Effacer la blacklist
|
||||
</button>
|
||||
<a href="{% url "group_delete" group.pk %}"
|
||||
role="button"
|
||||
class="secondary">
|
||||
<i class="ri-delete-bin-fill"></i> Supprimer</a>
|
||||
</div>
|
||||
</form>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% include "game/include/group_buttons.html" %}
|
||||
{% if group.musikgame_set.exists %}
|
||||
<h2>
|
||||
<i class="ri-play-circle-fill"></i> Parties
|
||||
|
@ -79,68 +56,7 @@
|
|||
{% endif %}
|
||||
</form>
|
||||
{% endif %}
|
||||
<h2>
|
||||
<i class="ri-group-2-fill"></i> Membres
|
||||
</h2>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
{% if group.owner == user %}<th></th>{% endif %}
|
||||
<th>Membre</th>
|
||||
<th>
|
||||
<i class="ri-vip-crown-fill"></i>
|
||||
</th>
|
||||
<th>
|
||||
<i class="ri-mv-line"></i>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
{% if group.owner == user %}<td></td>{% endif %}
|
||||
<td>{{ group.owner }}</td>
|
||||
<td>
|
||||
<i class="ri-vip-crown-fill owner"></i>
|
||||
</td>
|
||||
<td>{{ owner_count }}</td>
|
||||
</tr>
|
||||
{% for member in members.all %}
|
||||
<tr>
|
||||
{% if group.owner == user %}
|
||||
<td>
|
||||
<input type="checkbox" name="member" value="{{ member.pk }}">
|
||||
</td>
|
||||
{% endif %}
|
||||
<td>{{ member }}</td>
|
||||
<td></td>
|
||||
<td>{{ member.count }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% if group.owner == user %}
|
||||
<button type="submit"
|
||||
class="secondary"
|
||||
formaction="{% url "group_remove_member" pk=group.pk %}">
|
||||
<i class="ri-delete-bin-fill"></i> Supprimer les membres sélectionnés
|
||||
</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
{% if group.owner == user %}
|
||||
<form method="post" action="{% url "group_add_member" pk=group.pk %}">
|
||||
{% csrf_token %}
|
||||
<fieldset role="group">
|
||||
<input type="string"
|
||||
name="username"
|
||||
id="username"
|
||||
placeholder="Membre"
|
||||
required>
|
||||
<button type="submit">Ajouter</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% include "game/include/group_members.html" %}
|
||||
<h2>
|
||||
<i class="ri-music-2-fill"></i> Mes musiques <span class="music-count">{{ musics.count }}</span>
|
||||
</h2>
|
||||
|
|
28
game/templates/game/include/group_buttons.html
Normal file
28
game/templates/game/include/group_buttons.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
{% if is_leader %}
|
||||
<p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<p>
|
||||
<a href="{% url "start_game" pk=group.pk %}" role="button"><i class="ri-play-fill"></i> Jouer</a>
|
||||
</p>
|
||||
<div role="group">
|
||||
{% if is_owner %}
|
||||
<a href="{% url "group_update" pk=group.pk %}"
|
||||
class="secondary"
|
||||
role="button"><i class="ri-edit-line"></i> Renommer</a>
|
||||
{% endif %}
|
||||
<button type="submit"
|
||||
class="secondary"
|
||||
formaction="{% url "group_clear_blacklist" pk=group.pk %}">
|
||||
<i class="ri-history-fill"></i> Effacer la blacklist
|
||||
</button>
|
||||
{% if is_owner %}
|
||||
<a href="{% url "group_delete" group.pk %}"
|
||||
role="button"
|
||||
class="secondary">
|
||||
<i class="ri-delete-bin-fill"></i> Supprimer</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
</p>
|
||||
{% endif %}
|
79
game/templates/game/include/group_members.html
Normal file
79
game/templates/game/include/group_members.html
Normal file
|
@ -0,0 +1,79 @@
|
|||
<h2>
|
||||
<i class="ri-group-2-fill"></i> Membres
|
||||
</h2>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
{% if is_leader %}<th></th>{% endif %}
|
||||
<th>Membre</th>
|
||||
<th class="c">
|
||||
<i class="ri-vip-crown-fill"></i>
|
||||
</th>
|
||||
<th>
|
||||
<i class="ri-mv-line"></i>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
{% if is_leader %}<td></td>{% endif %}
|
||||
<td>{{ group.owner }}</td>
|
||||
<td class="c">
|
||||
<i class="ri-vip-crown-fill owner"></i>
|
||||
</td>
|
||||
<td>{{ owner_count }}</td>
|
||||
</tr>
|
||||
{% for member in members.all %}
|
||||
<tr>
|
||||
{% if is_leader %}
|
||||
<td>
|
||||
<input type="checkbox" name="member" value="{{ member.pk }}">
|
||||
</td>
|
||||
{% endif %}
|
||||
<td>{{ member.user }}</td>
|
||||
<td class="c">
|
||||
{% if is_owner %}
|
||||
<input type="checkbox"
|
||||
name="leader"
|
||||
value="{{ member.pk }}"
|
||||
role="switch"
|
||||
{% if member.lead.is_leader %}checked{% endif %}>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ member.count }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% if is_leader %}
|
||||
<div role="group">
|
||||
{% if is_owner %}
|
||||
<button type="submit"
|
||||
class="secondary"
|
||||
formaction="{% url "group_set_leader" pk=group.pk %}">
|
||||
<i class="ri-vip-crown-fill"></i> Mettre à jour meneurs
|
||||
</button>
|
||||
{% endif %}
|
||||
<button type="submit"
|
||||
class="secondary"
|
||||
formaction="{% url "group_remove_member" pk=group.pk %}">
|
||||
<i class="ri-delete-bin-fill"></i> Supprimer
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</form>
|
||||
{% if is_leader %}
|
||||
<form method="post" action="{% url "group_add_member" pk=group.pk %}">
|
||||
{% csrf_token %}
|
||||
<fieldset role="group">
|
||||
<input type="string"
|
||||
name="username"
|
||||
id="username"
|
||||
placeholder="Membre"
|
||||
required>
|
||||
<button type="submit">Ajouter</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endif %}
|
Loading…
Add table
Add a link
Reference in a new issue