def create_league(request, universe_id, name, level, nbr_div=0): universe = Universe.objects.get(id=universe_id) year = Year.objects.get(universe=universe,current_year=True) universe_teams = Team.objects.filter(universe=universe) placed_teams = LeagueMembership.objects.filter(universe=universe, year=year) available_teams = list(set(universe_teams) - set(placed_teams)) available_teams = sorted(available_teams,key=operator.attrgetter('city.division')) divisions = create_divisions(available_teams, int(nbr_div)) nbr_conf = len(divisions) / 2 conferences = [[] for x in xrange(nbr_conf)] c = 0 for division in divisions: conferences[c].append(division) if c+1 == len(conferences): c = 0 else: c += 1 league = League(universe=universe, name=name, level=level) league.save() conf_nbr=0 for conference in conferences: div_nbr=0 for division in conference: for team in division: lm = LeagueMembership(universe=universe, year=year, league=league, team=team, conference=conf_nbr, division=div_nbr) lm.save() div_nbr+=1 conf_nbr+=1 league.number_playoff_teams = randint((div_nbr+1),(len(available_teams)/2)) league.save() draft_players(universe) create_schedule(league) play_season(league) play_playoffs(league) return HttpResponse("Created league %s." % name)
def edit_game(request, game_id): game = Game.objects.get(id=game_id) league_list = League.objects.all() member_list = Member.objects.all() batting_query = Batting.objects.filter(game=game) pitching_query = Pitching.objects.filter(game=game) if request.method != "POST": game.date = unicode(game.date) away_name = game.away_name.encode('utf8') home_name = game.home_name.encode('utf8') game.away_scores = CommaSeparatedString_to_IntegerArray( game.away_scores) game.home_scores = CommaSeparatedString_to_IntegerArray( game.home_scores) message = "" warning = "" record_table = text_to_table(game.record.encode('utf8')) if (away_name.upper() == 'RB'): away_table = record_table home_table = [] else: away_table = [] home_table = record_table game_record, warning = parse_game_record(away_name, game.away_scores, away_table, \ home_name, game.home_scores, home_table) if (away_name.upper() == 'RB'): team = game_record.away else: team = game_record.home batting_list = [] for batting in batting_query: batting_list.append(batting) pitching_list = [] for pitching in pitching_query: pitching_list.append(pitching) # add rows for changing pitchers N = len(pitching_list) for i in range(5 - N): pitching_list.append(Pitching()) context = { 'league_list': league_list, 'game': game, 'warning': warning, 'message': message, 'game_record': game_record, 'team': team, 'member_list': member_list, 'batting_list': batting_list, 'pitching_list': pitching_list } return render(request, 'team/edit_game.html', context) else: # POST league_id = request.POST["league_id"] game.league = League.objects.get(id=league_id) game.date = request.POST["date"] game.location = request.POST["location"] game.record = request.POST["record_text"] game.away_name = request.POST["away_name"] game.home_name = request.POST["home_name"] game.away_scores = gather_team_scores_from_web(request, 'away') game.home_scores = gather_team_scores_from_web(request, 'home') print game.home_scores message = "" warning = "" game_record = None team = None if 'add-new-league-btn' in request.POST: print("add new league!") league_name = request.POST["new-league-name"] if league_name != None: league = League.objects.filter(name=league_name) if (league.exists()): warning = "League name %s already exists." % league_name else: league = League(name=league_name) league.save() message = 'Add new league: %s' % league_name league_list = League.objects.all() if 'add-new-member-btn' in request.POST: print("add new member!") member_name = request.POST["new-member-name"] member_number = int(request.POST["new-member-number"]) if member_name != None: member = Member.objects.filter(name=member_name) if (member.exists()): warning = "Member %s already exists." % member_name else: member = Member(name=member_name, number=member_number) member.save() message = 'Add new member: %s(%d)' % (member_name, member_number) member_list = Member.objects.all() if ('preview-btn' in request.POST) or ('save-game-btn' in request.POST): game.league = League.objects.get(id=league_id) record_table = text_to_table(game.record.encode('utf8')) away_name = game.away_name.encode('utf8') home_name = game.home_name.encode('utf8') if (away_name.upper() == 'RB'): away_table = record_table home_table = [] else: away_table = [] home_table = record_table game_record, warning = parse_game_record(away_name, game.away_scores, away_table, \ home_name, game.home_scores, home_table) game.away_R = game_record.away.R game.away_H = game_record.away.H game.away_E = game_record.away.E game.home_R = game_record.home.R game.home_H = game_record.home.H game.home_E = game_record.home.E if (warning == ""): message = "Preview record table!" game_record, team = extract_single_team_data(game_record, 'RB') batting_list = [] for batter in team.batters: batting = Batting() for play in batting_query: if batter.name.decode('utf8') == play.member.name: batting = play break batting.member = Member.objects.get( name=batter.name.decode('utf8')) batting.game = game batting.order = batter.order batting.pa = batter.PA batting.single = batter.B1 batting.double = batter.B2 batting.triple = batter.B3 batting.hr = batter.HR batting.rbi = batter.RBI batting.run = batter.RUN batting.bb = batter.BB batting.k = batter.K batting.sf = batter.SF batting.field = batter.pos batting_list.append(batting) # DO NOT modify pitching query with team.pitchers pitching_list = [] for pitching in pitching_query: pitching_list.append(pitching) # add rows for changing pitchers N = len(pitching_list) for i in range(5 - N): pitching_list.append(Pitching()) if 'save-game-btn' in request.POST: # create and save new Game object game.away_scores = IntegerArray_to_CommaSeparatedString( game.away_scores) game.home_scores = IntegerArray_to_CommaSeparatedString( game.home_scores) game.save() nBatter = len(batting_list) for i in range(nBatter): batting = batting_list[i] member_id = int( request.POST.get("batting_%d_id" % (i + 1), "")) if (member_id != 0): batting.member = Member.objects.get(id=member_id) batting.game = game batting.save() nPitcher = len(pitching_list) for i in range(nPitcher): pitching = pitching_list[i] member_id = int( request.POST.get("pitching_%d_id" % (i + 1), "")) if (member_id != 0): pitching.member = Member.objects.get(id=member_id) pitching.game = game pitching.outs = int( request.POST.get("pitching_%d_outs" % (i + 1), "")) pitching.pa = int( request.POST.get("pitching_%d_pa" % (i + 1), "")) pitching.hit = int( request.POST.get("pitching_%d_hit" % (i + 1), "")) pitching.hr = int( request.POST.get("pitching_%d_hr" % (i + 1), "")) pitching.bb = int( request.POST.get("pitching_%d_bb" % (i + 1), "")) pitching.k = int( request.POST.get("pitching_%d_k" % (i + 1), "")) pitching.run = int( request.POST.get("pitching_%d_run" % (i + 1), "")) pitching.er = int( request.POST.get("pitching_%d_er" % (i + 1), "")) pitching.go = int( request.POST.get("pitching_%d_go" % (i + 1), "")) pitching.fo = int( request.POST.get("pitching_%d_fo" % (i + 1), "")) win = request.POST.get("pitching_%d_win" % (i + 1), "") lose = request.POST.get( "pitching_%d_lose" % (i + 1), "") if (win != ''): pitching.win = 1 else: pitching.win = 0 if (lose != ''): pitching.lose = 1 else: pitching.lose = 0 pitching.save() return redirect("/game/" + str(game.id)) context = { 'league_list': league_list, 'game': game, 'warning': warning, 'message': message, 'game_record': game_record, 'team': team, 'member_list': member_list, 'batting_list': batting_list, 'pitching_list': pitching_list } return render(request, 'team/edit_game.html', context)
def add_or_edit_league(request, league=None): existing = "" if league: league = League.objects.get(pk=league) if request.method == "POST": if league: form = LeagueForm(request.POST) else: form = NewLeagueForm(request.POST) if form.is_valid(): if form.cleaned_data['join_leagues']: for league in form.cleaned_data['join_leagues']: # apply to join these leagues application = LeagueJoinStates.joined\ .apply_to_league(league, request.user) url = reverse('logged_in') return redirect(url) else: could_join = Set([]) applied = Set([]) invited = Set([]) # first, build three lists (applied, invited, # could_join) of leagues that people we're inviting # are already in for row in form.members.cleaned_data: if row: try: member = CustomUser.objects.get(email=row['email']) except CustomUser.DoesNotExist: continue user = request.user leagues = member.leagues_by_state(STATE_ACCEPTED) # don't include leagues we've already decided # not to join (or have been rejected from) leagues = leagues.exclude( leaguejoinstates__state=STATE_REJECTED, #leaguejoinstates__state=STATE_DECLINED, leaguejoinstates__user=user) if leagues: applied.update( leagues.filter( leaguejoinstates__state=STATE_APPLIED, leaguejoinstates__user=user)) invited.update( leagues.filter( leaguejoinstates__state=STATE_INVITED, leaguejoinstates__user=user)) could_join.update( leagues.exclude(leaguejoinstates__user=user)) if not request.POST.get('yes_really', '')\ and (could_join or applied or invited): # present the user with a choice to join other # leagues instead of making a new one # # XXX this is horrendous but I don't know how to # do it better choices = [(x.id, x.name) for x in could_join] form.fields['join_leagues'].choices = choices return locals() else: # create a new league and invite people to join it if not league: league = League(name=form.cleaned_data['name'], owner=request.user) league.save() # the current user will be a member, of course application = LeagueJoinStates(league=league, user=request.user, state=STATE_ACCEPTED) application.save() for row in form.members.cleaned_data: if not row: continue email = row['email'] try: member = CustomUser.objects.get(email=email) except CustomUser.DoesNotExist: create_user = CustomUser.objects.create_user member = create_user(username=email, email=email) member.save() try: profile = RegistrationProfile.objects\ .filter(user=member).get() except RegistrationProfile.DoesNotExist: profile = RegistrationProfile.objects\ .create_profile(member, email=False) invite = LeagueJoinStates.joined\ .invite_user(league, member) url = reverse('logged_in') return redirect(url) else: if league: form = LeagueForm() else: form = NewLeagueForm() return locals()
def add_game(request): league_list = League.objects.all() member_list = Member.objects.all() game = Game() batting_list = [] pitching_list = [] if request.method != "POST": game.date = None game.location = "" game.away_name = "" game.away_scores = [0] * 7 game.home_name = "" game.home_scores = [0] * 7 game.record = "" message = "" warning = "" context = { 'league_list': league_list, 'game': game, 'warning': warning, 'message': message } return render(request, 'team/add_game.html', context) else: league_id = request.POST["league_id"] game.league = League.objects.get(id=league_id) game.date = request.POST["date"] game.location = request.POST["location"] game.record = request.POST["record_text"] game.away_name = request.POST["away_name"] game.home_name = request.POST["home_name"] game.away_scores = gather_team_scores_from_web(request, 'away') game.home_scores = gather_team_scores_from_web(request, 'home') message = "" warning = "" game_record = None team = None if 'add-new-league-btn' in request.POST: print("add new league!") league_name = request.POST["new-league-name"] if league_name != None and league_name != "": league = League.objects.filter(name=league_name) if (league.exists()): warning = "League name %s already exists." % league_name else: league = League(name=league_name) league.save() message = 'Add new league: %s' % league_name league_list = League.objects.all() if 'add-new-member-btn' in request.POST: print("add new member!") member_name = request.POST["new-member-name"] member_number = int(request.POST["new-member-number"]) if member_name != None: member = Member.objects.filter(name=member_name) if (member.exists()): warning = "Member %s already exists." % member_name else: member = Member(name=member_name, number=member_number) member.save() message = 'Add new member: %s(%d)' % (member_name, member_number) member_list = Member.objects.all() if ('preview-btn' in request.POST) or ('save-game-btn' in request.POST): game.league = League.objects.get(id=league_id) record_table = text_to_table(game.record.encode('utf8')) away_name = game.away_name.encode('utf8') home_name = game.home_name.encode('utf8') if (away_name.upper() == 'RB'): away_table = record_table home_table = [] else: away_table = [] home_table = record_table game_record, warning = parse_game_record(away_name, game.away_scores, away_table, \ home_name, game.home_scores, home_table) game.away_R = game_record.away.R game.away_H = game_record.away.H game.away_E = game_record.away.E game.home_R = game_record.home.R game.home_H = game_record.home.H game.home_E = game_record.home.E if (warning == ""): message = "Preview record table!" game_record, team = extract_single_team_data(game_record, 'RB') # create and save new Batting object nBatter = len(team.batters) batting_list = [] for i in range(nBatter): batting = Batting() batting.game = game batting.order = team.batters[i].order batting.pa = team.batters[i].PA batting.single = team.batters[i].B1 batting.double = team.batters[i].B2 batting.triple = team.batters[i].B3 batting.hr = team.batters[i].HR batting.rbi = team.batters[i].RBI batting.run = team.batters[i].RUN batting.bb = team.batters[i].BB batting.k = team.batters[i].K batting.sf = team.batters[i].SF batting.field = team.batters[i].pos try: batting.member = Member.objects.get( name=team.batters[i].name.decode('utf8')) except Member.DoesNotExist: warning = "member name %s does not exist." % team.batters[ i].name break batting_list.append(batting) # create and save new Batting object nPitcher = len(team.pitchers) pitching_list = [] for i in range(nPitcher): pitching = Pitching() pitching.game = game pitching.order = i pitching.outs = team.pitchers[i].OUT pitching.pa = team.pitchers[i].TBF pitching.hit = team.pitchers[i].H pitching.hr = team.pitchers[i].HR pitching.bb = team.pitchers[i].BB pitching.k = team.pitchers[i].K pitching.run = team.pitchers[i].RUN pitching.er = team.pitchers[i].ER pitching.go = team.pitchers[i].GO pitching.fo = team.pitchers[i].FO pitching.win = team.pitchers[i].WIN pitching.lose = team.pitchers[i].LOSE try: pitching.member = Member.objects.get( name=team.pitchers[i].name.decode('utf8')) except Member.DoesNotExist: warning = "member name %s does not exist." % team.pitchers[ i].name break pitching_list.append(pitching) # add rows for changing pitchers N = len(pitching_list) for i in range(5 - N): pitching_list.append(Pitching()) if 'save-game-btn' in request.POST: # create and save new Game object game.away_scores = IntegerArray_to_CommaSeparatedString( game.away_scores) game.home_scores = IntegerArray_to_CommaSeparatedString( game.home_scores) game.save() nBatter = len(batting_list) for i in range(nBatter): batting = batting_list[i] member_id = int( request.POST.get("batting_%d_id" % (i + 1), "")) if (member_id != 0): batting.member = Member.objects.get(id=member_id) batting.game = game batting.save() nPitcher = len(pitching_list) for i in range(nPitcher): pitching = pitching_list[i] member_id = int( request.POST.get("pitching_%d_id" % (i + 1), "")) if (member_id != 0): pitching.member = Member.objects.get(id=member_id) pitching.game = game pitching.outs = int( request.POST.get("pitching_%d_outs" % (i + 1), "")) pitching.pa = int( request.POST.get("pitching_%d_pa" % (i + 1), "")) pitching.hit = int( request.POST.get("pitching_%d_hit" % (i + 1), "")) pitching.hr = int( request.POST.get("pitching_%d_hr" % (i + 1), "")) pitching.bb = int( request.POST.get("pitching_%d_bb" % (i + 1), "")) pitching.k = int( request.POST.get("pitching_%d_k" % (i + 1), "")) pitching.run = int( request.POST.get("pitching_%d_run" % (i + 1), "")) pitching.er = int( request.POST.get("pitching_%d_er" % (i + 1), "")) pitching.go = int( request.POST.get("pitching_%d_go" % (i + 1), "")) pitching.fo = int( request.POST.get("pitching_%d_fo" % (i + 1), "")) win = request.POST.get("pitching_%d_win" % (i + 1), "") lose = request.POST.get( "pitching_%d_lose" % (i + 1), "") if (win != ''): pitching.win = 1 else: pitching.win = 0 if (lose != ''): pitching.lose = 1 else: pitching.lose = 0 pitching.save() return redirect("/game/" + str(game.id)) # end of add-game-btn # end of preview context = { 'league_list': league_list, 'game': game, 'warning': warning, 'message': message, 'game_record': game_record, 'team': team, 'member_list': member_list, 'batting_list': batting_list, 'pitching_list': pitching_list } return render(request, 'team/add_game.html', context)