def sanction(self, sanction_type, person, team):

        from py.match.events import SanctionIssued
        from DVA import match_events_dispatch

        match_events_dispatch.run(SanctionIssued,
                                  [sanction_type, person, team], 'NEW')
    def save(self, team, button):

        from py.match.events import StaffSetUpConfirmed
        from DVA import match_events_dispatch
        from gfx.frontend import PopUpWindow

        self.update()

        head_coach_present = 0
        assistant_one_present = 0
        assistant_two_present = 0
        doctor_present = 0
        massagist_present = 0

        errors = []

        for i in range(0, len(self.map_values), 7):

            if not self.map_values[i + 6]:
                pass

            else:

                if self.map_values[i + 5]:
                    head_coach_present += 1

                if self.map_values[i + 4]:
                    assistant_one_present += 1

                if self.map_values[i + 3]:
                    assistant_two_present += 1

                if self.map_values[i + 2]:
                    doctor_present += 1

                if self.map_values[i + 1]:
                    massagist_present += 1

        if head_coach_present > max_amount_head_coach:
            errors.append(team_set_up_errors[language_code][7])

        if assistant_one_present > max_amount_assistant_one:
            errors.append(team_set_up_errors[language_code][8])

        if assistant_two_present > max_amount_assistant_two:
            errors.append(team_set_up_errors[language_code][8])

        if doctor_present > max_amount_doctor:
            errors.append(team_set_up_errors[language_code][9])

        if massagist_present > max_amount_massagist:
            errors.append(team_set_up_errors[language_code][10])

        if len(errors) == 0:
            match_events_dispatch.run(StaffSetUpConfirmed,
                                      [self.map_values, team], 'NEW')
        else:
            PopUpWindow().show_pop_up('\n'.join(errors))
    def time_out(self, button, team):

        from DVA import match, match_events_dispatch, frontend_references as gui
        from py.match.events import TimeOutTaken

        match_events_dispatch.run(TimeOutTaken, [
            team.long_name,
            len(match.sets), match.sets[-1].score, button, False
        ], 'NEW')
    def substitution(self, team, player_in, player_out, request_counter,
                     is_forced):

        from DVA import match_events_dispatch
        from py.match.events import SubstitutionMade

        match_events_dispatch.run(
            SubstitutionMade,
            [team, player_in, player_out, request_counter, is_forced], 'NEW')
    def coin_toss(self):

        from DVA import match_events_dispatch, frontend_references as gui
        from py.match.events import CoinTossResultsConfirmed

        match_events_dispatch.run(CoinTossResultsConfirmed, [
            gui.get('MatchWindowRefereeCoinTossTabTeamAButtonA').state,
            gui.get('MatchWindowRefereeCoinTossTabTeamBButtonA').state,
            gui.get('MatchWindowRefereeCoinTossTabTeamAButtonServe').state,
            gui.get('MatchWindowRefereeCoinTossTabTeamBButtonServe').state
        ], 'NEW')
    def write_protest(self, team):

        from DVA import match_events_dispatch, match, frontend_references as gui
        from py.match.events import ProtestWritten

        match_events_dispatch.run(ProtestWritten, [
            team,
            gui.get('MatchWindowRefereeProtestsTabTeam' +
                    ('A' if team == match.left_team else 'B') +
                    'TextInput').text
        ], 'NEW')
    def save(self, team):

        from DVA import match_events_dispatch
        from py.match.events import LineUpConfirmed

        data = []

        for name in self.elements:
            data.append(name.text.split(maxsplit=1)[1])

        self.clear()

        if team == 'A':
            match_events_dispatch.run(LineUpConfirmed, [data, 'A'], 'NEW')
        else:
            match_events_dispatch.run(LineUpConfirmed, [data, 'B'], 'NEW')
    def mistake(self):

        from py.match.events import Point_sReceived
        from DVA import match_events_dispatch, match

        match_events_dispatch.run(Point_sReceived, ['mistake', self], 'NEW')
    def point(self):

        from py.match.events import Point_sReceived
        from DVA import match_events_dispatch, match

        match_events_dispatch.run(Point_sReceived, ['score', self], 'NEW')
    def declare_protest(self, team):

        from DVA import match_events_dispatch
        from py.match.events import ProtestDeclared

        match_events_dispatch.run(ProtestDeclared, [team], 'NEW')
    def save(self, team, button):

        from py.match.events import SetUpConfirmed
        from DVA import match_events_dispatch
        from gfx.frontend import PopUpWindow

        self.update()

        players_present = 0
        players_liberos = 0
        players_captains = 0

        errors = []

        for i in range(0, len(self.map_values), 5):

            if not self.map_values[i + 4]:
                pass

            else:

                players_present += 1

                if self.map_values[i + 3]:

                    players_captains += 1

                    if self.map_values[i + 2]:
                        if not libero_can_be_captain:
                            errors.append(team_set_up_errors[language_code][4])

                if self.map_values[i + 2]:
                    players_liberos += 1

                if self.map_values[i + 1].isdigit() and 0 < int(
                        self.map_values[i + 1]) < max_shirt_number:
                    for j in range(0, len(self.map_values), 5):
                        if self.map_values[j + 1] == self.map_values[
                                i + 1] and j != i and team_set_up_errors[
                                    language_code][6] not in errors:
                            errors.append(team_set_up_errors[language_code][6])
                else:
                    errors.append(team_set_up_errors[language_code][5])

        if players_present - players_liberos < players_in_team:
            errors.append(team_set_up_errors[language_code][0])
        if players_captains != 1:
            errors.append(team_set_up_errors[language_code][1])
        if (players_in_team + players_liberos
            ) > players_present or players_liberos > max_amount_liberos:
            errors.append(team_set_up_errors[language_code][2])
        if players_present >= players_more_or_equal_to_x_liberos_at_least_y[
                0] and players_liberos < players_more_or_equal_to_x_liberos_at_least_y[
                    1]:
            errors.append(team_set_up_errors[language_code][3])

        if len(errors) == 0:
            match_events_dispatch.run(SetUpConfirmed, [self.map_values, team],
                                      'NEW')
        else:
            PopUpWindow().show_pop_up('\n'.join(errors))