return game_type_cd not in {'cts'}
+def should_do_frag_matrix(game_type_cd):
+ """True if the game type should record frag matrix values. False otherwise."""
+ return game_type_cd in {
+ 'as', 'ca', 'ctf', 'dm', 'dom', 'ft', 'freezetag', 'ka', 'kh', 'rune', 'tdm',
+ }
+
+
def gametype_elo_eligible(game_type_cd):
"""True of the game type should process Elos. False otherwise."""
return game_type_cd in {'duel', 'dm', 'ca', 'ctf', 'tdm', 'ka', 'ft'}
game.mod = mod[:64]
# There is some drift between start_dt (provided by app) and create_dt
- # (default in the database), so we'll make them the same until this is
+ # (default in the database), so we'll make them the same until this is
# resolved.
game.create_dt = start_dt
matrix = {victim_index(k): int(v) for (k, v) in events.items()
if k.startswith("kills-") and victim_index(k) in player_indexes}
- pfm = PlayerGameFragMatrix(pgstat.game_id, pgstat.player_game_stat_id, pgstat.player_id,
- player_index, matrix)
-
- session.add(pfm)
+ if len(matrix) > 0:
+ pfm = PlayerGameFragMatrix(pgstat.game_id, pgstat.player_game_stat_id, pgstat.player_id,
+ player_index, matrix)
- return pfm
+ session.add(pfm)
+ return pfm
+ else:
+ return None
def submit_stats(request):
pgstat = create_game_stat(session, game, gmap, player, events)
pgstats.append(pgstat)
- frag_matrix = create_frag_matrix(session, submission.player_indexes, pgstat, events)
+ if should_do_frag_matrix(submission.game_type_cd):
+ create_frag_matrix(session, submission.player_indexes, pgstat, events)
# player ranking opt-out
- if 'r' in events and events['r'] != '0':
+ if 'r' in events and events['r'] == '0':
+ log.debug("Excluding player {} from ranking calculations (opt-out)"
+ .format(pgstat.player_id))
+ else:
elo_pgstats.append(pgstat)
if player.player_id > 1: