diff --git a/games/forms.py b/games/forms.py index 86b04c4..270ef01 100644 --- a/games/forms.py +++ b/games/forms.py @@ -227,19 +227,30 @@ class PlayEventForm(forms.ModelForm): widget=forms.Select(attrs={"autofocus": "autofocus"}), ) + mark_as_finished = forms.BooleanField( + required=False, + initial={"mark_as_finished": True}, + label="Set game status to Finished", + ) + class Meta: model = PlayEvent - fields = [ - "game", - "started", - "ended", - "note", - ] + fields = ["game", "started", "ended", "note", "mark_as_finished"] widgets = { "started": custom_date_widget, "ended": custom_date_widget, } + def save(self, commit=True): + with transaction.atomic(): + session = super().save(commit=False) + if self.cleaned_data.get("mark_as_finished"): + game_instance = session.game + game_instance.status = "f" + game_instance.save() + session.save() + return session + class GameStatusChangeForm(forms.ModelForm): class Meta: