mirror of
https://github.com/spiffcode/hostile-takeover.git
synced 2026-02-01 12:03:22 +00:00
Client platform version can be retrieved live with /ids and is also recorded in the playerdetail module.
118 lines
3.5 KiB
Python
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()
|