"""Django Forms to add and edit Mai-Star games."""

from django import forms
from django.utils.translation import ugettext as _

from . import models


class GameForm(forms.ModelForm):
    """To add/edit a Mai-Star game for the ladder ranking."""
    error_css_class = 'error'
    required_css_class = 'required'

    class Meta(object):
        """hide the metadata in the form."""
        fields = [
            'player1', 'player1_score',
            'player2', 'player2_score',
            'player3', 'player3_score',
            'player4', 'player4_score',
            'player5', 'player5_score',
            'player6', 'player6_score',
            'comment'
        ]
        model = models.Game

    def clean(self):
        """Check that every player occours only once per game."""
        cleaned_data = super(GameForm, self).clean()
        players_in_game = set()
        for player_no in range(1, 6):
            player = 'player{nr}'.format(nr=player_no)
            current_player = cleaned_data.get('player')
            if current_player and current_player in players_in_game:
                msg = _("%s may only participate once." % current_player)
                self._errors[player] = self.error_class([msg])
                del cleaned_data[player]
            players_in_game.add(current_player)
        return cleaned_data
