def team_create(): if not g.user: return redirect('/login') form = TeamForm(request.form) if request.method == 'POST': num_teams = g.user.teams.count() max_teams = config_setting('USER_MAX_TEAMS') if max_teams >= 0 and num_teams >= max_teams and not g.user.admin: flash( 'You already have the maximum number of teams ({}) stored'.format(num_teams)) elif form.validate(): data = form.data auths = form.get_auth_list() name = data['name'].strip() tag = data['tag'].strip() flag = data['country_flag'] logo = data['logo'] team = Team.create(g.user, name, tag, flag, logo, auths, data['public_team'] and g.user.admin) db.session.commit() app.logger.info( 'User {} created team {}'.format(g.user.id, team.id)) return redirect('/teams/{}'.format(team.user_id)) else: flash_errors(form) return render_template('team_create.html', user=g.user, form=form, edit=False, is_admin=g.user.admin)
def server_create(): if not g.user: return redirect('/login') form = ServerForm(request.form) if request.method == 'POST': num_servers = g.user.servers.count() max_servers = config_setting('USER_MAX_SERVERS', 0) if max_servers >= 0 and num_servers >= max_servers and not g.user.admin: flash('You already have the maximum number of servers ({}) stored'.format(num_servers)) elif form.validate(): mock = config_setting('TESTING', False) data = form.data server = GameServer.create( g.user, data['ip_string'], data['port'], data['rcon_password']) if mock or util.check_server_connection(server): db.session.commit() app.logger.info( 'User {} created server {}'.format(g.user.id, server.id)) return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=False)
def season_create(): if not g.user: return redirect('/login') form = SeasonForm(request.form) if request.method == 'POST': num_seasons = g.user.seasons.count() max_seasons = config_setting('USER_MAX_SEASONS') if max_seasons >= 0 and num_seasons >= max_seasons and not (util.is_admin(g.user) or util.is_super_admin(g.user)): flash('You already have the maximum number of seasons ({}) created'.format( num_seasons)) elif form.validate(): season = Season.create( g.user, form.data['season_title'], form.data['start_date'], form.data['end_date']) db.session.commit() app.logger.info('User {} created season {}' .format(g.user.id, season.id)) return redirect('/myseasons') else: get5.flash_errors(form) return render_template( 'season_create.html', form=form, user=g.user)
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = (g.user.id == server.user_id) if not is_owner: return 'Not your server', 400 form = ServerForm(request.form, ip_string=server.ip_string, port=server.port, rcon_password=server.rcon_password) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data server.ip_string = data['ip_string'] server.port = data['port'] server.rcon_password = data['rcon_password'] if mock or util.check_server_connection(server): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True)
def team_create(): mock = config_setting("TESTING") customNames = config_setting("CUSTOM_PLAYER_NAMES") if not g.user: return redirect('/login') form = TeamForm() # We wish to query this every time, since we can now upload photos. if not mock: form.logo.choices = logos.get_logo_choices() if request.method == 'POST': num_teams = g.user.teams.count() max_teams = config_setting('USER_MAX_TEAMS') if max_teams >= 0 and num_teams >= max_teams and not (util.is_admin( g.user) or util.is_super_admin(g.user)): flash('You already have the maximum number of teams ({}) stored'. format(num_teams)) elif form.validate(): data = form.data auths = form.get_auth_list() pref_names = form.get_pref_list() name = data['name'].strip() tag = data['tag'].strip() flag = data['country_flag'] logo = data['logo'] # Update the logo. Passing validation we have the filename in the # list now. if not mock and (util.is_admin(g.user) or util.is_super_admin( g.user)) and form.upload_logo.data: filename = secure_filename(form.upload_logo.data.filename) index_of_dot = filename.index('.') newLogoDetail = filename[:index_of_dot] # Reinit our logos. logos.add_new_logo(newLogoDetail) app.logger.info("Added new logo id {}".format(newLogoDetail)) data['logo'] = newLogoDetail team = Team.create( g.user, name, tag, flag, logo, auths, data['public_team'] and (util.is_admin(g.user) or util.is_super_admin(g.user)), pref_names) db.session.commit() app.logger.info('User {} created team {}'.format( g.user.id, team.id)) return redirect('/teams/{}'.format(team.user_id)) else: flash_errors(form) return render_template('team_create.html', user=g.user, form=form, edit=False, is_admin=(util.is_admin(g.user) or util.is_super_admin(g.user)), MAXPLAYER=Team.MAXPLAYERS, customNames=customNames)
def tournament_create(): if not g.user: return redirect('/login') form = TournamentForm(request.form) if request.method == 'POST': num_tournaments = g.user.tournaments.count() max_tournaments = config_setting('USER_MAX_TOURNAMENTS') if max_tournaments >= 0 and num_tournaments >= max_tournaments and not g.user.admin: flash( 'You already have the maximum number of tournaments ({}) created' .format(num_tournaments)) if form.validate(): mock = config_setting('TESTING') reply = {} if mock: reply['id'] = 1234 reply['name'] = "Testy McTestTournament" reply['full_challonge_url'] = "http://www.test.mctest/test" message = 'Success' else: try: reply = chall.create_tournament( name=form.data['tournament_name'], url=form.data['tournament_url']) reply = reply['tournament'] except challonge.ChallongeException as e: flash(str(e)) if reply['id']: t = Tournament.create(g.user, reply['name'], reply['full_challonge_url'], challonge_id=reply['id'], challonge_data=reply, veto_mappool=form.data['veto_mappool'], serverpool=form.serverpool.data) db.session.commit() app.logger.info( 'User {} created tournament {} - {} url {}'.format( g.user.id, t.id, t.name, t.url)) return redirect( url_for('tournament.tournament', tournamentid=t.id)) else: get5.flash_errors(form) return render_template('tournament_create.html', form=form, user=g.user)
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = (g.user and (util.is_server_owner(g.user, server))) is_sadmin = (g.user and util.is_super_admin(g.user)) app.logger.info("Owner: {} Sadmin: {}".format(is_owner, is_sadmin)) if not is_owner: if not is_sadmin: raise BadRequestError('You do not have access to this server.') # Attempt encryption/decryption rconDecrypt = util.decrypt(dbKey, server.rcon_password) form = ServerForm(request.form, display_name=server.display_name, ip_string=server.ip_string, port=server.port, rcon_password=server.rcon_password if rconDecrypt is None else rconDecrypt, public_server=server.public_server) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data if not mock: encRcon = util.encrypt(dbKey, str(data['rcon_password'])) else: encRcon = data['rcon_password'] server.display_name = data['display_name'] server.ip_string = data['ip_string'] server.port = data['port'] server.rcon_password = encRcon server.public_server = (data['public_server'] and util.is_admin(g.user)) if mock or util.check_server_connection(server, dbKey): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True, is_admin=util.is_admin(g.user), is_sadmin=util.is_super_admin(g.user))
def team_edit(teamid): team = Team.query.get_or_404(teamid) if not team.can_edit(g.user): return 'Not your team', 400 form = TeamForm(request.form, name=team.name, tag=team.tag, country_flag=team.flag, logo=team.logo, auth1=team.auths[0], auth2=team.auths[1], auth3=team.auths[2], auth4=team.auths[3], auth5=team.auths[4], auth6=team.auths[5], auth7=team.auths[6], public_team=team.public_team) if request.method == 'GET': return render_template('team_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin) elif request.method == 'POST': if request.method == 'POST': if form.validate(): data = form.data public_team = team.public_team if g.user.admin: public_team = data['public_team'] team.set_data(data['name'], data['tag'], data['country_flag'], data['logo'], form.get_auth_list(), public_team) db.session.commit() return redirect('/teams/{}'.format(team.user_id)) else: flash_errors(form) return render_template('team_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin)
def match_edit(matchid): match = Match.query.get_or_404(matchid) admintools_check(g.user, match) form = MatchForm( request.form, server=GameServer.query.get(match.server_id) if match.server_id else None, series_type="bo{}".format(match.max_maps), team1=Team.query.get(match.team1_id), team2=Team.query.get(match.team2_id), ) if request.method == 'GET': return render_template('match_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin) elif request.method == 'POST': if request.method == 'POST': if form.validate() or True: # TODO form validation on edit skip_veto = 'preset' in form.data['series_type'] try: max_maps = int(form.data['series_type'][2]) except ValueError: max_maps = 1 data = form.data update_dict = { 'team1_id': form.team1.data.id, 'team2_id': form.team2.data.id, 'max_maps': max_maps, 'server_id': form.server.data.id, } Match.query.filter_by(id=matchid).update(update_dict) db.session.commit() return redirect(url_for('match.match', matchid=matchid)) else: get5.flash_errors(form) return render_template('match_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin)
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = g.user and (g.user.id == server.user_id) if not is_owner: return 'Not your server', 400 # Attempt encryption/decryption rconDecrypt = util.decrypt(dbKey, server.rcon_password) form = ServerForm(request.form, display_name=server.display_name, ip_string=server.ip_string, port=server.port, rcon_password=server.rcon_password if rconDecrypt is None else rconDecrypt, public_server=server.public_server) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data if not mock: encRcon = util.encrypt(dbKey, str(data['rcon_password'])) else: encRcon = data['rcon_password'] server.display_name = data['display_name'] server.ip_string = data['ip_string'] server.port = data['port'] server.rcon_password = encRcon server.public_server = (data['public_server'] and g.user.admin) if mock or util.check_server_connection(server, dbKey): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin)
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = (g.user and (g.user.id == server.user_id)) or g.user.admin if not is_owner: return 'Not your server', 400 form = ServerForm(request.form, display_name=server.display_name, ip_string=server.ip_string, port=server.port, gotv_port=server.gotv_port, rcon_password=server.rcon_password, public_server=server.public_server, dathost_id=server.dathost_id) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data server.display_name = data['display_name'] server.ip_string = data['ip_string'] server.port = data['port'] server.gotv_port = data['gotv_port'] server.rcon_password = data['rcon_password'] server.dathost_id = ['dathost_id'] server.public_server = (data['public_server'] and g.user.admin) if mock or util.check_server_connection(server): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin)
def team_edit(teamid): team = Team.query.get_or_404(teamid) if not team.can_edit(g.user): return 'Not your team', 400 form = TeamForm( request.form, name=team.name, tag=team.tag, country_flag=team.flag, logo=team.logo, auth1=team.auths[0], auth2=team.auths[1], auth3=team.auths[2], auth4=team.auths[3], auth5=team.auths[4], auth6=team.auths[5], auth7=team.auths[6], public_team=team.public_team) if request.method == 'GET': return render_template('team_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin) elif request.method == 'POST': if request.method == 'POST': if form.validate(): data = form.data public_team = team.public_team if g.user.admin: public_team = data['public_team'] team.set_data(data['name'], data['tag'], data['country_flag'], data['logo'], form.get_auth_list(), public_team) db.session.commit() return redirect('/teams/{}'.format(team.user_id)) else: flash_errors(form) return render_template( 'team_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin)
def server_create(): if not g.user: return redirect('/login') form = ServerForm(request.form) if request.method == 'POST': num_servers = g.user.servers.count() max_servers = config_setting('USER_MAX_SERVERS') if max_servers >= 0 and num_servers >= max_servers and not ( util.is_admin(g.user) or util.is_super_admin(g.user)): flash('You already have the maximum number of servers ({}) stored'. format(num_servers)) elif form.validate(): mock = config_setting('TESTING') data = form.data if not mock: encRcon = util.encrypt(dbKey, str(data['rcon_password'])) else: encRcon = data['rcon_password'] server = GameServer.create( g.user, data['display_name'], data['ip_string'], data['port'], encRcon, data['public_server'] and util.is_admin(g.user)) if mock or util.check_server_connection(server, dbKey): db.session.commit() app.logger.info('User {} created server {}'.format( g.user.id, server.id)) return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=False, is_admin=util.is_admin(g.user))
def tournament_add_servers(tournamentid): tournament = Tournament.query.get_or_404(tournamentid) admintools_check(g.user, tournament) form = AddServers(request.form) if request.method == 'POST': if form.validate(): tournament.serverpool = form.serverpool.data db.session.commit() return redirect( url_for('tournament.tournament', tournamentid=tournament.id)) else: get5.flash_errors(form) return render_template('tournament_add_servers.html', form=form, user=g.user)
def match_create(): if not g.user: return redirect('/login') form = MatchForm(request.form) form.add_teams(g.user) form.add_servers(g.user) if request.method == 'POST': num_matches = g.user.matches.count() max_matches = config_setting('USER_MAX_MATCHES') if max_matches >= 0 and num_matches >= max_matches and not g.user.admin: flash('You already have the maximum number of matches ({}) created'.format( num_matches)) if form.validate(): mock = config_setting('TESTING') server = GameServer.query.get_or_404(form.data['server_id']) match_on_server = g.user.matches.filter_by( server_id=server.id, end_time=None, cancelled=False).first() server_avaliable = False json_reply = None if g.user.id != server.user_id: server_avaliable = False message = 'This is not your server!' elif match_on_server is not None: server_avaliable = False message = 'Match {} is already using this server'.format( match_on_server.id) elif mock: server_avaliable = True message = 'Success' else: json_reply, message = util.check_server_avaliability( server) server_avaliable = (json_reply is not None) if server_avaliable: skip_veto = 'preset' in form.data['series_type'] try: max_maps = int(form.data['series_type'][2]) except ValueError: max_maps = 1 match = Match.create( g.user, form.data['team1_id'], form.data['team2_id'], form.data['team1_string'], form.data['team2_string'], max_maps, skip_veto, form.data['match_title'], form.data['veto_mappool'], form.data['server_id']) # Save plugin version data if we have it if json_reply and 'plugin_version' in json_reply: match.plugin_version = json_reply['plugin_version'] else: match.plugin_version = 'unknown' server.in_use = True db.session.commit() app.logger.info('User {} created match {}, assigned to server {}' .format(g.user.id, match.id, server.id)) if mock or match.send_to_server(): return redirect('/mymatches') else: flash('Failed to load match configs on server') else: flash(message) else: get5.flash_errors(form) return render_template('match_create.html', form=form, user=g.user, teams=g.user.teams, match_text_option=config_setting('CREATE_MATCH_TITLE_TEXT'))
def match_create(): if not g.user: return redirect('/login') form = MatchForm(request.form) form.add_teams(g.user) form.add_servers(g.user) if request.method == 'POST': num_matches = g.user.matches.count() max_matches = config_setting('USER_MAX_MATCHES') if max_matches >= 0 and num_matches >= max_matches and not g.user.admin: flash('You already have the maximum number of matches ({}) created'.format( num_matches)) if form.validate(): mock = config_setting('TESTING') server = GameServer.query.get_or_404(form.data['server_id']) match_on_server = g.user.matches.filter_by( server_id=server.id, end_time=None, cancelled=False).first() server_avaliable = False json_reply = None if g.user.id != server.user_id and not server.public_server: server_avaliable = False message = 'This is not your server!' elif match_on_server is not None: server_avaliable = False message = 'Match {} is already using this server'.format( match_on_server.id) elif mock: server_avaliable = True message = 'Success' else: json_reply, message = util.check_server_avaliability( server) server_avaliable = (json_reply is not None) if server_avaliable: skip_veto = 'preset' in form.data['series_type'] try: max_maps = int(form.data['series_type'][2]) except ValueError: max_maps = 1 match = Match.create( g.user, form.data['team1_id'], form.data['team2_id'], form.data['team1_string'], form.data['team2_string'], max_maps, skip_veto, form.data['match_title'], form.data['veto_mappool'], form.data['server_id']) # Save plugin version data if we have it if json_reply and 'plugin_version' in json_reply: match.plugin_version = json_reply['plugin_version'] else: match.plugin_version = 'unknown' server.in_use = True db.session.commit() app.logger.info('User {} created match {}, assigned to server {}' .format(g.user.id, match.id, server.id)) if mock or match.send_to_server(): return redirect('/mymatches') else: flash('Failed to load match configs on server') else: flash(message) else: get5.flash_errors(form) return render_template( 'match_create.html', form=form, user=g.user, teams=g.user.teams, match_text_option=config_setting('CREATE_MATCH_TITLE_TEXT'))
def match_create(): if not g.user: return redirect('/login') form = MatchForm(request.form) form.add_teams(g.user) form.add_servers(g.user) form.add_seasons() if request.method == 'POST': num_matches = g.user.matches.count() max_matches = config_setting('USER_MAX_MATCHES') season_id = None if max_matches >= 0 and num_matches >= max_matches and not g.user.admin: flash('You already have the maximum number of matches ({}) created'.format( num_matches)) elif form.validate(): mock = config_setting('TESTING') server = GameServer.query.get_or_404(form.data['server_id']) match_on_server = g.user.matches.filter_by( server_id=server.id, end_time=None, cancelled=False).first() server_available = False json_reply = None if g.user.id != server.user_id and not server.public_server: server_available = False message = 'This is not your server!' elif match_on_server is not None: server_available = False message = 'Match {} is already using this server'.format( match_on_server.id) elif mock: server_available = True message = 'Success' else: json_reply, message = util.check_server_avaliability( server,dbKey) server_available = (json_reply is not None) if server_available: skip_veto = 'preset' in form.data['series_type'] try: max_maps = int(form.data['series_type'][2]) except ValueError: max_maps = 1 if form.data['season_selection'] != 0: season_id = form.data['season_selection'] match = Match.create( g.user, form.data['team1_id'], form.data['team2_id'], form.data['team1_string'], form.data['team2_string'], max_maps, skip_veto, form.data['match_title'], form.data['veto_mappool'], season_id, form.data['side_type'], form.data['veto_first'], form.data['server_id']) # Save plugin version data if we have it if json_reply and 'plugin_version' in json_reply: match.plugin_version = json_reply['plugin_version'] else: match.plugin_version = 'unknown' # ADD FORM DATA FOR EXTRA GOODIES HERE LIKE CLAN TAG ETC. # Essentially stuff that doesn't need to be stored in DB. # Force Get5 to auth on official matches. Don't raise errors # if we cannot do this. if server_available and not mock: server.send_rcon_command('get5_check_auths ' + str(int(form.data['enforce_teams'])), num_retries=2, timeout=0.75) server.in_use = True db.session.commit() app.logger.info('User {} created match {}, assigned to server {}' .format(g.user.id, match.id, server.id)) if mock or match.send_to_server(): return redirect('/mymatches') else: flash('Failed to load match configs on server') else: flash(message) else: get5.flash_errors(form) return render_template( 'match_create.html', form=form, user=g.user, teams=g.user.teams, match_text_option=config_setting('CREATE_MATCH_TITLE_TEXT'))
def match_create(): if not g.user: return redirect('/login') form = MatchForm(request.form) form.add_teams(g.user) form.add_servers(g.user) form.add_seasons() if request.method == 'POST': num_matches = g.user.matches.count() max_matches = config_setting('USER_MAX_MATCHES') season_id = None if max_matches >= 0 and num_matches >= max_matches and not ( g.user.admin or g.user.super_admin): flash( 'You already have the maximum number of matches ({}) created'. format(num_matches)) elif form.validate(): mock = config_setting('TESTING') server = GameServer.query.get_or_404(form.data['server_id']) match_on_server = g.user.matches.filter_by( server_id=server.id, end_time=None, cancelled=False).first() server_available = False json_reply = None if g.user.id != server.user_id and not server.public_server: server_available = False message = 'This is not your server!' elif match_on_server is not None: server_available = False message = 'Match {} is already using this server'.format( match_on_server.id) elif mock: server_available = True message = 'Success' else: json_reply, message = util.check_server_avaliability( server, dbKey) server_available = (json_reply is not None) if server_available: skip_veto = 'preset' in form.data['series_type'] try: max_maps = int(form.data['series_type'][2]) except ValueError: max_maps = 1 if form.data['season_selection'] != 0: season_id = form.data['season_selection'] # Series Score Feature. team1_series_score = form.data[ 'team1_series_score'] if not None else 0 team2_series_score = form.data[ 'team2_series_score'] if not None else 0 # End Series Score Feature. # Spectator Feature specList = [] if form.data['spectator_string']: for auth in form.data['spectator_string'].split(): suc, new_auth = steamid.auth_to_steam64(auth) if suc: specList.append(new_auth) if not specList: specList = None # End Spectator Feature match = Match.create( g.user, form.data['team1_id'], form.data['team2_id'], form.data['team1_string'], form.data['team2_string'], max_maps, skip_veto, form.data['match_title'], form.data['veto_mappool'], season_id, form.data['side_type'], form.data['veto_first'], form.data['server_id'], team1_series_score, team2_series_score, specList, form.data['private_match'], form.data['enforce_teams'], form.data['min_player_ready']) # Save plugin version data if we have it if json_reply and 'plugin_version' in json_reply: match.plugin_version = json_reply['plugin_version'] else: match.plugin_version = 'unknown' server.in_use = True db.session.commit() # Implement normalized spectator list. if specList: for singleAuth in specList: MatchSpectator.set_or_create(match.id, auth) app.logger.info( 'User {} created match {}, assigned to server {}'.format( g.user.id, match.id, server.id)) if mock or match.send_to_server(): return redirect('/mymatches') else: flash('Failed to load match configs on server') else: flash(message) else: get5.flash_errors(form) return render_template( 'match_create.html', form=form, user=g.user, teams=g.user.teams, match_text_option=config_setting('CREATE_MATCH_TITLE_TEXT'))
def team_edit(teamid): mock = config_setting("TESTING") customNames = config_setting("CUSTOM_PLAYER_NAMES") team = Team.query.get_or_404(teamid) if not team.can_edit(g.user): raise BadRequestError("Not your team.") form = TeamForm() # We wish to query this every time, since we can now upload photos. if not mock: form.logo.choices = logos.get_logo_choices() if request.method == 'GET': # Set values here, as per new FlaskForms. form.name.data = team.name form.tag.data = team.tag form.country_flag.data = team.flag form.logo.data = team.logo for field in form: if "auth" in field.name: try: field.data = team.auths[ int(re.search(r'\d+', field.name).group()) - 1] except: field.data = None if "pref_name" in field.name: try: field.data = team.preferred_names[ int(re.search(r'\d+', field.name).group()) - 1] except: field.data = None form.public_team.data = team.public_team return render_template('team_create.html', user=g.user, form=form, edit=True, is_admin=(g.user.admin or g.user.super_admin), MAXPLAYER=Team.MAXPLAYERS, customNames=customNames) elif request.method == 'POST': if form.validate(): data = form.data public_team = team.public_team if (g.user.admin or g.user.super_admin): public_team = data['public_team'] # Update the logo. Passing validation we have the filename in the # list now. if not mock and (g.user.admin or g.user.super_admin) and form.upload_logo.data: filename = secure_filename(form.upload_logo.data.filename) index_of_dot = filename.index('.') newLogoDetail = filename[:index_of_dot] # Reinit our logos. logos.add_new_logo(newLogoDetail) data['logo'] = newLogoDetail allAuths = form.get_auth_list() allNames = form.get_pref_list() team.set_data(data['name'], data['tag'], data['country_flag'], data['logo'], allAuths, public_team, allNames) for auth, name in itertools.izip_longest(allAuths, allNames): if auth: teamNames = TeamAuthNames.set_or_create(teamid, auth, name) db.session.commit() return redirect('/teams/{}'.format(team.user_id)) else: flash_errors(form) return render_template('team_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin, MAXPLAYER=Team.MAXPLAYERS)