def save_athlete(athlete, request): df = athlete.drop_duplicates("ID", keep='first') df[['Name', 'Sex']].fillna(value=" ", inplace=True) df['Height'].fillna(value=df['Height'].mean(), inplace=True) df['Weight'].fillna(value=df['Weight'].mean(), inplace=True) registered_country = Country.get_registered_regions() registered_sport = Sport.get_registered_sports() registered_athlete = Athlete.get_registered_athlete() message_except = "Erro ao cadastrar o atleta " for item in df.iterrows(): if not region_not_exist(item[1]["NOC"], registered_country): if not sport_not_exist(item[1]["Sport"], registered_sport): sport_id = get_in_dataframe(item[1]["Sport"], "name", registered_sport) team_id = get_in_dataframe(item[1]["NOC"], "noc", registered_country) if athlete_not_exist(item[1]["Name"], item[1]["Sex"], item[1]["Height"], item[1]["Weight"], team_id, sport_id, registered_athlete): try: Athlete.create(item[1]["Name"], item[1]["Height"], item[1]["Weight"], item[1]["Sex"], team_id, sport_id) registered_athlete = update_registered_athlete( registered_athlete, item[1]["Name"], item[1]["Sex"], item[1]["Height"], item[1]["Weight"], team_id, sport_id) except: register_message(item[1]["ID"] + " " + item[1]["Name"], message_except, request)
def athlete_filter_submit(request): if request.POST: name = request.POST.get("name") age = request.POST.get("age") height = request.POST.get("height") weight = request.POST.get("weight") sex = request.POST.get("sex") team_id = request.POST.get("team_id") game_id = request.POST.get("game_id") event_id = request.POST.get("event_id") sport_id = request.POST.get("sport_id") city_id = request.POST.get("city_id") season_id = request.POST.get("season_id") gold = request.POST.get("gold") silver = request.POST.get("silver") bronze = request.POST.get("bronze") if filter_validate(name, age, height, weight, sex, team_id, game_id, event_id, sport_id, city_id, season_id, gold, silver, bronze): data = { 'title': "Lista de atletas", 'athletes': Athlete.filter(name, age, height, weight, sex, team_id, game_id, event_id, sport_id, city_id, season_id, gold, silver, bronze) } return render(request, 'athlete/list.html', data) else: messages.error(request, "Nenhum um filtro selecionado") return redirect('/athlete/filter')
def update_athlete_submit(request): if request.POST and request.POST.get("id"): id = request.POST.get("id") name = request.POST.get("name") height = request.POST.get("height") weight = request.POST.get("weight") sex = request.POST.get("sex") team_id = request.POST.get("team_id") sport_id = request.POST.get("sport_id") if create_athlete_validate(name, height, weight): athlete = Athlete.update(id, name, height, weight, sex, team_id, sport_id) if athlete is None: messages.error(request, "Erro na atualização") else: return redirect("/athlete/view/?id={}".format(id)) else: message_error(name, height, weight, request) return redirect('/athlete/update/{}'.format(id)) else: messages.error(request, "Erro no post") return redirect('/athlete/filter')
def update_registered_athlete(registered, name, sex, height, weight, team_id, sport_id): if len(registered) == 0: return Athlete.get_registered_athlete() else: df = pd.DataFrame( [[0, name, height, weight, sex, team_id, sport_id]], [0], ["id", "name", "height", "weight", "sex", "team_id", "sport_id"]) return pd.concat([registered, df])
def athlete_delete(request, id): if id: if Athlete.delete(id) is False: messages.error(request, "Erro durante a exclusão") else: return redirect("/athlete/list/") else: messages.error(request, "Atleta nao encontrado") return redirect("/athlete/view/?id={}".format(id))
def update_athlete(request, id): if id: data = { 'title': "Alterar atleta", 'title_h': "Atualização", 'athlete': Athlete.get_by_id(id), 'team': Country.list_all(), 'sport': Sport.list_all(), } return render(request, 'athlete/create.html', data)
def athlete_view(request): if request.GET and request.GET.get("id"): id = request.GET.get("id") data = { 'title': "Visualizar atleta", 'athlete': Athlete.get_all_info_by_id(id) } return render(request, 'athlete/view.html', data) return redirect('/athlete/filter')
def filter(name, age, height, weight, sex, team_id, game_id, event_id, sport_id, city_id, season_id, gold, silver, bronze): athletes = [] athletes_medal = [] athletes_team = [] athletes_sport = [] athletes_age = [] athletes_sex = [] athletes_event = [] athletes_games = [] athletes_city= [] athletes_season = [] if team_id != "0": athletes_team = filter_by_team_id(team_id) if sport_id != "0": athletes_sport = filter_by_sport_id(sport_id) if age != "": athletes_age = EventParticipants.filter_get_athlete_age(age) if sex != "A": athletes_sex = filter_by_sex(sex) if gold is not None or silver is not None or bronze is not None: medals = Medal.filter(gold, silver, bronze) athletes_medal = EventParticipants.filter_get_athlete_medals(medals) if event_id != "0": game_events = GameEvent.filter_by_event(event_id) athletes_event = EventParticipants.filter_get_athlete_game_event(game_events) if game_id != "0": game_events = GameEvent.filter_by_game_id(game_id) athletes_games = EventParticipants.filter_get_athlete_game_event(game_events) if city_id != "0": games = Game.filter_by_city(city_id) if len(games) > 0: game_events = GameEvent.filter_by_game(games) athletes_city = EventParticipants.filter_get_athlete_game_event(game_events) if season_id != "0": games = Game.filter_by_season(season_id) if len(games) > 0: game_events = GameEvent.filter_by_game(games) athletes_season = EventParticipants.filter_get_athlete_game_event(game_events) if name != "" or age != "" or height != "" or weight != "": athletes = Athlete.filter_athletes(name, age, height, weight) return intersection(athletes, athletes_medal, athletes_team, athletes_sport, athletes_age, athletes_sex, athletes_event, athletes_games, athletes_city, athletes_season )
def add_participation(request, id): if id: athlete = Athlete.get_by_id(id) participants = EventParticipants.filter_by_athlete(athlete) games_events = GameEvent.get_did_not_participate(participants) data = { 'title': "Adicionar participacao em evento", 'athlete': athlete, 'games_events': games_events } return render(request, 'athlete/participation.html', data) return redirect("/athlete/filter/")
def participation_athlete_submit(request): if request.POST and request.POST.get("id"): id = request.POST.get("id") age = request.POST.get("age") game_event_id = request.POST.get("game_event_id") medal_id = request.POST.get("medal_id") if age != "": athlete = Athlete.get_by_id(id) game_event = GameEvent.get_by_id(game_event_id) medal = Medal.get_by_id(medal_id) EventParticipants.create(athlete, age, game_event, medal) return redirect("/athlete/view/?id={}".format(id)) else: messages.error(request, "* Idade não pode estar vazia") return redirect("/athlete/filter/")
def create_athlete_submit(request): if request.POST: name = request.POST.get("name") height = request.POST.get("height") weight = request.POST.get("weight") sex = request.POST.get("sex") team_id = request.POST.get("team_id") sport_id = request.POST.get("sport_id") if create_athlete_validate(name, height, weight): athlete = Athlete.create(name, height, weight, sex, team_id, sport_id) if athlete is None: messages.error(request, "Erro no cadastro") else: return redirect("/athlete/view/?id={}".format(athlete.id)) else: message_error(name, height, weight, request) return redirect('/athlete/create') else: messages.error(request, "Erro no post")
def save_event_participants(athlete, request): athlete[['Name', 'Sex', 'Medal']].fillna(value="", inplace=True) athlete['Height'].fillna(value=athlete['Height'].mean(), inplace=True) athlete['Weight'].fillna(value=athlete['Weight'].mean(), inplace=True) athlete['Age'].fillna(value=athlete['Age'].mean(), inplace=True) athlete.sort_values("Name", inplace=True) registered_country = Country.get_registered_regions() registered_sport = Sport.get_registered_sports() registered_athlete = Athlete.get_registered_athlete() registered_season = Season.get_registered_season() registered_city = City.get_registered_city() registered_events = Event.get_registered_events() registered_games = Game.get_registered_games() registered_game_event = GameEvent.get_registered_games_event() registered_participant = EventParticipants.get_registered_game_event_participant( ) message_except = "Erro ao cadastrar o atleta no evento" for item in athlete.iterrows(): if not region_not_exist(item[1]["NOC"], registered_country): if not sport_not_exist(item[1]["Sport"], registered_sport): season_id = get_in_dataframe(item[1]["Season"], "name", registered_season) city_id = get_in_dataframe(item[1]["City"], "name", registered_city) event_id = get_in_dataframe(item[1]["Event"], "name", registered_events) game_id = get_game_by_data(item[1]["Year"], season_id, city_id, registered_games) if not game_event_not_exist(game_id, event_id, registered_game_event): sport_id = get_in_dataframe(item[1]["Sport"], "name", registered_sport) team_id = get_in_dataframe(item[1]["NOC"], "noc", registered_country) if not athlete_not_exist( item[1]["Name"], item[1]["Sex"], item[1]["Height"], item[1]["Weight"], team_id, sport_id, registered_athlete): athlete_id = get_athlete_id_in_dataframe( item[1]["Name"], item[1]["Sex"], item[1]["Height"], item[1]["Weight"], team_id, sport_id, registered_athlete) game_event_id = get_game_event_in_dataframe( game_id, event_id, registered_game_event) if event_participant_not_exist(athlete_id, item[1]["Age"], game_event_id, registered_participant): try: game_event = GameEvent.get_game_event_by_id( game_event_id) athlete = Athlete.get_by_id(athlete_id) medal = Medal.get_medal(item[1]["Medal"]) EventParticipants.create( athlete, item[1]["Age"], game_event, medal) registered_participant = update_registered_participant( registered_athlete, athlete_id, item[1]["Age"], game_event_id) except: register_message( item[1]["Name"] + " " + item[1]["Event"], message_except, request)
def athlete_list(request): data = {'title': "Lista de atletas", 'athletes': Athlete.list_all()} return render(request, 'athlete/list.html', data)