charasheet/src/party/views.py

109 lines
3.7 KiB
Python
Raw Normal View History

2022-11-06 14:07:16 +01:00
from django.contrib import messages
2022-11-02 23:52:28 +01:00
from django.contrib.auth.decorators import login_required
2022-11-03 00:02:28 +01:00
from django.shortcuts import get_object_or_404, redirect, render
2022-11-02 23:52:28 +01:00
2022-11-06 14:42:29 +01:00
from character.models import Character, HarmfulState
2022-11-02 23:52:28 +01:00
from party.forms import PartyForm
from party.models import Party
@login_required
def parties_list(request):
context = {
"managed_parties": Party.objects.managed_by(request.user),
2022-11-06 14:30:17 +01:00
"played_parties": Party.objects.played_by(request.user).distinct(),
2022-11-06 15:35:32 +01:00
"invited_to": Party.objects.invited_to(request.user).distinct(),
2022-11-02 23:52:28 +01:00
}
return render(request, "party/parties_list.html", context)
@login_required
def party_create(request):
if request.method == "GET":
form = PartyForm()
else:
form = PartyForm(request.POST)
if form.is_valid():
party = form.save(commit=False)
party.game_master = request.user
party.save()
form.save_m2m()
return redirect("party:list")
context = {"form": form}
2022-11-06 14:30:17 +01:00
return render(request, "party/party_form.html", context)
2022-11-03 00:02:28 +01:00
@login_required
def party_details(request, pk):
party = get_object_or_404(Party.objects.related_to(request.user), pk=pk)
2022-11-06 14:42:29 +01:00
context = {
"party": party,
"all_states": HarmfulState.objects.all(),
}
2022-11-03 00:02:28 +01:00
return render(request, "party/party_details.html", context)
2022-11-06 14:07:16 +01:00
@login_required
def party_delete(request, pk):
party = get_object_or_404(Party.objects.managed_by(request.user), pk=pk)
context = {"party": party}
if request.method == "POST":
name = party.name
party.delete()
messages.success(request, f"Le groupe {name} a été supprimé.")
return redirect("party:list")
return render(request, "party/party_delete.html", context)
2022-11-06 14:13:30 +01:00
2022-11-06 14:30:17 +01:00
@login_required
def party_change(request, pk):
party = get_object_or_404(Party.objects.managed_by(request.user), pk=pk)
context = {"party": party}
if request.method == "GET":
form = PartyForm(instance=party)
else:
form = PartyForm(request.POST or None, instance=party)
if form.is_valid():
form.save()
messages.success(request, "Groupe modifié.")
return redirect("party:list")
context["form"] = form
return render(request, "party/party_form.html", context)
2022-11-06 14:13:30 +01:00
@login_required
def party_leave(request, pk, character_pk):
2022-11-06 15:35:32 +01:00
party = get_object_or_404(Party.objects.played_by(request.user).distinct(), pk=pk)
2022-11-06 14:13:30 +01:00
character = get_object_or_404(
Character.objects.owned_by(request.user), pk=character_pk
)
context = {"party": party, "character": character}
if request.method == "POST":
character.parties.remove(party)
messages.success(request, f"{character} a quitté le groupe {party}.")
return redirect("party:list")
return render(request, "party/party_leave.html", context)
2022-11-06 15:35:32 +01:00
@login_required
def party_join(request, pk, character_pk):
party = get_object_or_404(Party.objects.invited_to(request.user).distinct(), pk=pk)
character = get_object_or_404(
Character.objects.owned_by(request.user), pk=character_pk
)
party.characters.add(character)
party.invited_characters.remove(character)
messages.success(request, f"{character} a rejoint le groupe {party}.")
return redirect("party:list")
@login_required
def party_refuse(request, pk, character_pk):
party = get_object_or_404(Party.objects.invited_to(request.user).distinct(), pk=pk)
character = get_object_or_404(
Character.objects.owned_by(request.user), pk=character_pk
)
party.invited_characters.remove(character)
messages.success(request, f"{character} a refusé l'invitation au groupe {party}.")
return redirect("party:list")