Add game end functionality with view and URL routing, update models and templates for game state management
This commit is contained in:
parent
d03d3b48d4
commit
f9ed70d386
9 changed files with 181 additions and 89 deletions
|
@ -344,6 +344,12 @@ class GameDetailView(LoginRequiredMixin, DetailView):
|
|||
.distinct()
|
||||
)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
data = super().get_context_data(**kwargs)
|
||||
data["is_leader"] = data["musikgame"].group.is_leader(self.request.user)
|
||||
data["is_owner"] = data["musikgame"].group.is_owner(self.request.user)
|
||||
return data
|
||||
|
||||
|
||||
class YoutubeCallbackView(LoginRequiredMixin, View):
|
||||
def get(self, request):
|
||||
|
@ -428,7 +434,7 @@ class GameAnswerView(LoginRequiredMixin, DetailView):
|
|||
template_name = "game/musikgame_answer.html"
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(players=self.request.user)
|
||||
return super().get_queryset().filter(over=False, players=self.request.user)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
return super().get_context_data(**kwargs) | {
|
||||
|
@ -452,3 +458,15 @@ class GameAnswerView(LoginRequiredMixin, DetailView):
|
|||
defaults={"answer": None},
|
||||
)
|
||||
return redirect("game_answer", pk)
|
||||
|
||||
|
||||
class GameEndView(LoginRequiredMixin, SingleObjectMixin, View):
|
||||
model = models.MusikGame
|
||||
|
||||
def post(self, request, pk):
|
||||
game = self.get_object()
|
||||
if not game.group.is_leader(request.user):
|
||||
raise PermissionDenied()
|
||||
game.over = True
|
||||
game.save()
|
||||
return redirect("game_detail", pk)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue