def submit_team(request): if request.method == 'POST': form = SelectTeamForm(request.POST) if form.is_valid(): team = form.save() for field in Formation.fields: for player in form.cleaned_data[field]: SquadMember.objects.create(team=team, player=player, week_in=gameinfo.gameWeek() + 1) week = WeekPoints.objects.latest_week() if week is not None: for w in range(1, week + 1): WeekPoints.objects.create(team=team, week=w) html = render_to_string('team_email.html', {'team': team}) email = EmailMessage('Your Team', html, '*****@*****.**', to=[team.email], bcc=['*****@*****.**'], headers={'Reply-To': '*****@*****.**', 'From': 'Fantasy Football'}) email.content_subtype = 'html' email.send() return HttpResponseRedirect(reverse(team_submitted)) else: form = SelectTeamForm() return render(request, 'submit_team.html', {'form': form, 'budget': config.MAX_COST, 'week': gameinfo.gameWeek() + 1})
def player(request, code): player = Player.objects.code(code) return render(request, 'player.html', {'player': player, 'playing_for': player.playing_for(), 'subbed_by': player.subbed_by(), 'week': gameinfo.gameWeek()})
def weekly_performance(request, from_week=None, to_week=None): week = gameinfo.gameWeek() if week: MAX_WEEKS = 20 to_week = week_to(to_week) from_week = max(week_from(from_week), (to_week - MAX_WEEKS + 1)) if from_week <= to_week: nweeks = to_week - from_week + 1 weeknums = range(from_week, to_week + 1) table = WeekPoints.objects.table(from_week, to_week) return render( request, 'weeklyperformance.html', { 'ncols': nweeks + 1, 'weeknums': weeknums, 'points': table, 'prev': from_week != 1, 'next': to_week != WeekPoints.objects.latest_week() }) else: raise Http404() else: return render(request, 'weeklyperformance.html', {'week': week})
def update(self): game_week = gameinfo.gameWeek() length = self.count() for i, player in enumerate(self.all()): player_update = telegraph.PlayerUpdate(player.code) player.club = player_update.club() week_points = [0]*game_week if player.club: points_list = player_update.points() else: # keep the points as they are as they may have been removed from the website points_list = player.weekly_points.values_list('week', 'points') for week, points in points_list: week_points[week-1] += points WeekPoints.objects.filter(player=player).delete() for week, points in enumerate(week_points): WeekPoints.objects.create(player=player, week=week+1, points=points) player.games = player_update.games() player.total_points = player_update.total_points() player.save() yield "{0} ({1:d}/{2:d})".format(player.name, i+1, length)
def update(self): game_week = gameinfo.gameWeek() length = self.count() for i, player in enumerate(self.all()): player_update = telegraph.PlayerUpdate(player.code) player.club = player_update.club() week_points = [0] * game_week if player.club: points_list = player_update.points() else: # keep the points as they are as they may have been removed from the website points_list = player.weekly_points.values_list( 'week', 'points') for week, points in points_list: week_points[week - 1] += points WeekPoints.objects.filter(player=player).delete() for week, points in enumerate(week_points): WeekPoints.objects.create(player=player, week=week + 1, points=points) player.games = player_update.games() player.total_points = player_update.total_points() player.save() yield "{0} ({1:d}/{2:d})".format(player.name, i + 1, length)
def player(request, code): player = Player.objects.code(code) return render( request, 'player.html', { 'player': player, 'playing_for': player.playing_for(), 'subbed_by': player.subbed_by(), 'week': gameinfo.gameWeek() })
def week_best(self, week): if not week: week = gameinfo.gameWeek() query_set = self.none() week_points = self.filter(week=week).select_related() for position in Formation.labels: position_points = week_points.filter(player__position=position) points = position_points.aggregate(models.Max('points'))['points__max'] query_set = query_set | position_points.filter(points=points) return query_set
def submit_team(request): if request.method == 'POST': form = SelectTeamForm(request.POST) if form.is_valid(): team = form.save() for field in Formation.fields: for player in form.cleaned_data[field]: SquadMember.objects.create(team=team, player=player, week_in=gameinfo.gameWeek() + 1) week = WeekPoints.objects.latest_week() if week is not None: for w in range(1, week + 1): WeekPoints.objects.create(team=team, week=w) html = render_to_string('team_email.html', {'team': team}) email = EmailMessage('Your Team', html, '*****@*****.**', to=[team.email], bcc=['*****@*****.**'], headers={ 'Reply-To': '*****@*****.**', 'From': 'Fantasy Football' }) email.content_subtype = 'html' email.send() return HttpResponseRedirect(reverse(team_submitted)) else: form = SelectTeamForm() return render(request, 'submit_team.html', { 'form': form, 'budget': config.MAX_COST, 'week': gameinfo.gameWeek() + 1 })
def week_best(self, week): if not week: week = gameinfo.gameWeek() query_set = self.none() week_points = self.filter(week=week).select_related() for position in Formation.labels: position_points = week_points.filter(player__position=position) points = position_points.aggregate( models.Max('points'))['points__max'] query_set = query_set | position_points.filter(points=points) return query_set
def graph(request, teams=None, from_week=None, to_week=None): week = gameinfo.gameWeek() if week: if request.GET: # form has been submitted - redirect to the full url. form = GraphForm(request.GET) if form.is_valid(): teams = '-'.join( [str(team.id) for team in form.cleaned_data['team']]) from_week = week_from(form.cleaned_data['from_week']) to_week = week_to(form.cleaned_data['to_week']) return HttpResponseRedirect( reverse(graph, args=[teams, from_week, to_week])) else: if teams is None: # we are at the basic url so render an empty form. form = GraphForm() else: # we are at the full url - add the values into the form and render the page. try: ids = map(int, teams.split('-')) except ValueError: raise Http404() for team_id in ids: if not Team.objects.filter(id=team_id): raise Http404() from_week = week_from(from_week) to_week = week_to(to_week) form = GraphForm( initial={ 'team': Team.objects.filter(id__in=ids), 'from_week': from_week, 'to_week': to_week }) return render( request, 'graph.html', { 'form': form, 'teams': teams, 'from_week': from_week, 'to_week': to_week }) else: # the game has yet to start so there is nothing to graph. return render('graph.html', {'week': week})
def graph(request, teams=None, from_week=None, to_week=None): week = gameinfo.gameWeek() if week: if request.GET: # form has been submitted - redirect to the full url. form = GraphForm(request.GET) if form.is_valid(): teams = '-'.join([str(team.id) for team in form.cleaned_data['team']]) from_week = week_from(form.cleaned_data['from_week']) to_week = week_to(form.cleaned_data['to_week']) return HttpResponseRedirect(reverse(graph, args=[teams, from_week, to_week])) else: if teams is None: # we are at the basic url so render an empty form. form = GraphForm() else: # we are at the full url - add the values into the form and render the page. try: ids = map(int, teams.split('-')) except ValueError: raise Http404() for team_id in ids: if not Team.objects.filter(id=team_id): raise Http404() from_week = week_from(from_week) to_week = week_to(to_week) form = GraphForm(initial={'team': Team.objects.filter(id__in=ids), 'from_week': from_week, 'to_week': to_week}) return render(request, 'graph.html', {'form': form, 'teams': teams, 'from_week': from_week, 'to_week': to_week}) else: # the game has yet to start so there is nothing to graph. return render('graph.html', {'week': week})
def weekly_performance(request, from_week=None, to_week=None): week = gameinfo.gameWeek() if week: MAX_WEEKS = 20 to_week = week_to(to_week) from_week = max(week_from(from_week), (to_week - MAX_WEEKS + 1)) if from_week <= to_week: nweeks = to_week - from_week + 1 weeknums = range(from_week, to_week + 1) table = WeekPoints.objects.table(from_week, to_week) return render(request, 'weeklyperformance.html', {'ncols': nweeks + 1, 'weeknums': weeknums, 'points': table, 'prev': from_week != 1, 'next': to_week != WeekPoints.objects.latest_week()}) else: raise Http404() else: return render(request, 'weeklyperformance.html', {'week': week})
def _players(request, position): template = position.lower() + 's.html' return render(request, template, {'players': Player.objects.position(position), 'week': gameinfo.gameWeek()})
def _players(request, position): template = position.lower() + 's.html' return render(request, template, { 'players': Player.objects.position(position), 'week': gameinfo.gameWeek() })
def league(request): return render(request, 'league.html', {'week': gameinfo.gameWeek(), 'teams': Team.objects.order_by('-total_points','id')})
def league(request): return render( request, 'league.html', { 'week': gameinfo.gameWeek(), 'teams': Team.objects.order_by('-total_points', 'id') })