def check_team_size(compid: int, nat=False): """Checks that the number of pilots in a team don't exceed the allowed number""" from formula import Formula from db.tables import TblParticipant as P formula = Formula.read(compid) message = '' if nat: max_team_size = formula.max_country_size or 0 else: max_team_size = formula.max_team_size or 0 with db_session() as db: if nat: q = db.query(P.nat, func.sum( P.nat_team)).filter(P.comp_id == compid).group_by(P.nat) else: q = db.query(P.team, func.count( P.team)).filter(P.comp_id == compid).group_by(P.team) result = q.all() for team in result: if team[1] > max_team_size: message += f"<p>Team {team[0]} has {team[1]} members - only {max_team_size} allowed.</p>" return message
def get_participants(compid: int, source='all'): """get all registered pilots for a comp. Compid: comp_id source: all: all participants internal: only participants from pilot table (with pil_id) external: only participants not in pilot table (without pil_id)""" from compUtils import get_participants from formula import Formula pilots = get_participants(compid) pilot_list = [] external = 0 for pilot in pilots: if pilot.nat_team == 1: pilot.nat_team = '✓' else: pilot.nat_team = None if pilot.paid == 1: pilot.paid = 'Y' else: pilot.paid = 'N' if source == 'all' or source == 'internal': if pilot.pil_id: pilot_list.append(pilot.as_dict()) if source == 'all' or source == 'external': if not pilot.pil_id: external += 1 pilot_list.append(pilot.as_dict()) formula = Formula.read(compid) teams = { 'country_scoring': formula.country_scoring, 'max_country_size': formula.max_country_size, 'country_size': formula.country_size, 'team_scoring': formula.team_scoring, 'team_size': formula.team_size, 'max_team_size': formula.max_team_size } return pilot_list, external, teams