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