hostile-takeover/stats/models.py
Nathan Fulton d6b301c3e7 Track client platform version
Client platform version can be retrieved live with /ids and is also
recorded in the playerdetail module.
2016-08-31 23:54:48 -04:00

118 lines
3.5 KiB
Python

import config
from google.appengine.ext import db
# +++
class PlayerModel(db.Model):
name = db.StringProperty()
password = db.StringProperty()
rating = db.IntegerProperty(default = 0)
game_count = db.IntegerProperty(default = 0)
games_won = db.IntegerProperty(default = 0)
avatar_hash = db.StringProperty()
last_game_key_name = db.StringProperty()
credits_acquired_total = db.IntegerProperty(default = 0)
credits_consumed_total = db.IntegerProperty(default = 0)
munts_killed_total = db.IntegerProperty(default = 0)
structs_killed_total = db.IntegerProperty(default = 0)
munts_lost_total = db.IntegerProperty(default = 0)
structs_lost_total = db.IntegerProperty(default = 0)
built_counts_total = db.ListProperty(int, default = [0] * config.BUILT_COUNTS_MAX)
elapsed_seconds_total = db.IntegerProperty(default = 0)
rating_check_utc = db.IntegerProperty(default = 0)
last_game_utc = db.IntegerProperty(default = 0)
blocked = db.BooleanProperty(default = False)
hidden = db.BooleanProperty(default = False)
history = db.TextProperty(default = '[]')
sequence_number = db.IntegerProperty(default = 0)
def playermodel_key_from_key_name(key_name):
return db.Key.from_path("PlayerModel", key_name)
def playermodel_key(name):
return db.Key.from_path("PlayerModel", 'k' + name.lower())
# +++
class PlayerUpdateFailed(db.Model):
name = db.StringProperty()
password = db.StringProperty()
avatar_hash = db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
backtrace = db.TextProperty()
# +++
class AvatarModel(db.Model):
hash = db.StringProperty()
content = db.BlobProperty()
def avatarmodel_key(hash):
return db.Key.from_path("AvatarModel", 'k' + hash.lower())
# +++
class GameStatsModel(db.Model):
date = db.DateTimeProperty(auto_now_add=True)
player_key_names = db.StringListProperty()
mission_title = db.StringProperty()
start_utc = db.IntegerProperty()
end_utc = db.IntegerProperty()
old_ratings = db.TextProperty()
dids = db.TextProperty()
json = db.TextProperty()
def gamestatsmodel_key_from_name(key_name):
return db.Key.from_path("GameStatsModel", key_name)
def gamestatsmodel_key(server_id, server_start, gameid):
key_name = 'k%02x-%08x-%08x' % (server_id, server_start, gameid)
return gamestatsmodel_key_from_name(key_name)
# +++
class GameStatsFailed(db.Model):
json = db.TextProperty()
date = db.DateTimeProperty(auto_now_add=True)
backtrace = db.TextProperty()
# +++
class ServerInfoModel(db.Model):
json = db.TextProperty()
command = db.TextProperty()
expires_utc = db.IntegerProperty()
def serverinfomodel_key(name, start_utc):
key_name = 'k%s-%u' % (name.lower(), start_utc)
return db.Key.from_path('ServerInfoModel', key_name)
# +++
class AccountModel(db.Model):
nickname = db.StringProperty()
access_rights = db.IntegerProperty()
def accountmodel_key(user_id):
return db.Key.from_path("AccountModel", 'k' + user_id.lower())
# +++
class PlayerActionModel(db.Model):
player_name = db.StringProperty()
anonymous = db.BooleanProperty()
did = db.StringProperty()
ip_address = db.StringProperty()
action = db.StringProperty()
time_utc = db.IntegerProperty()
platform = db.StringProperty()
# +++
class AdminActionModel(db.Model):
admin_user = db.StringProperty()
ip_address = db.StringProperty()
action = db.TextProperty()
time_utc = db.IntegerProperty()