00001 class PlayerManager(models.Manager):
00002 def get_ts_data(self):
00003 return [
00004 dict(P.win_percent_plot_args(),name=P.name)
00005 for P in self.plotable()]
00006
00007 class Player(models.Model):
00008 name=models.CharField(
00009 max_length=100,null=False,blank=True,default='',unique=True)
00010
00011 objects=PlayerManager()
00012
00013 MANAGER_DATAPLOTS=[
00014 (R.multi_time_series,{'get_plot_args':{
00015 'x':'get_ts_data',
00016 'main':"Win percent over time",
00017 'ylab':"Win percent",
00018 'xlab':"Game date",
00019 },'init_args':{'h':9,'w':6.5}}),
00020 ]
00021
00022 DATAPLOTS=[
00023 (R.TimeSeries,{'qs':'scores_ordered','attribute':'win_percent_plot',
00024 'get_plot_args':{
00025 'd':'game_seconds',
00026 'y':'win_percent_until_now',
00027 }}),
00028 ]
00029
00030 class Score(models.Model):
00031 player=models.ForeignKey(Player)
00032 team=models.ForeignKey(Team)
00033
00034 def game_seconds(self):
00035 return self.team.game.date.strftime("%s")
00036
00037 def win_percent_until_now(self):
00038 qs=self.player.score_set.filter(
00039 team__game__date__lte=self.team.game.date)
00040 wins=qs.filter(team__won__exact=True).count()
00041 games=qs.count()
00042 return float(wins)/games
00043