4 from datetime import datetime
5 import sqlalchemy as sa
6 import sqlalchemy.sql.functions as func
7 from pyramid.paster import bootstrap
8 from xonstat.models import *
10 from render import Skin
13 # maximal number of query results (for testing, set to 0 to get all)
21 bg = "background_archer-v1",
27 bgcolor = (0.04, 0.04, 0.04, 1.0),
28 overlay = "overlay_minimal",
32 gametype_pos = (25,30),
33 gametype_text = "%s :",
35 gametype_fontsize = 10,
37 elo_text = "Elo %.0f",
38 elo_color = (1.0, 1.0, 0.6),
40 nostats_pos = (80,30),
41 nostats_fontsize = 10,
43 nostats_text = "no stats!",
51 ptime_color = (0.8, 0.8, 0.9),
54 # parse cmdline parameters (for testing)
57 arg = sys.argv[1].lower()
60 elif arg == "minimal":
67 env = bootstrap('../../../development.ini')
69 req.matchdict = {'id':3}
71 print "Requesting player data from db ..."
72 start = datetime.now()
74 if locals().has_key('NUM_PLAYERS'):
75 players = DBSession.query(Player).\
76 filter(Player.player_id == PlayerElo.player_id).\
77 filter(Player.nick != None).\
78 filter(Player.player_id > 2).\
79 filter(Player.active_ind == True).\
80 limit(NUM_PLAYERS).all()
82 players = DBSession.query(Player).\
83 filter(Player.player_id == PlayerElo.player_id).\
84 filter(Player.nick != None).\
85 filter(Player.player_id > 2).\
86 filter(Player.active_ind == True).\
91 total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
92 print "Query took %.2f seconds" % (total_seconds)
94 print "Creating badges for %d players ..." % len(players)
95 start = datetime.now()
96 data_time, render_time = 0,0
97 for player in players:
98 req.matchdict['id'] = player.player_id
100 sstart = datetime.now()
101 skin.get_data(player)
102 sstop = datetime.now()
104 total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
105 data_time += total_seconds
107 sstart = datetime.now()
108 skin.render_image("output/%d.png" % player.player_id)
109 sstop = datetime.now()
111 total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
112 render_time += total_seconds
114 stop = datetime.now()
116 total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
117 print "Creating the badges took %.1f seconds (%.3f s per player)" % (total_seconds, total_seconds/float(len(players)))
118 print "Total time for redering images: %.3f s" % render_time
119 print "Total time for getting data: %.3f s" % data_time