hostile-takeover/stats/accounts.py
2014-07-06 17:47:28 -07:00

77 lines
2.1 KiB
Python

import logging
import models
from google.appengine.api import users
rights = dict(
BLOCK_PLAYER_ACCESS_RIGHT = 0x00000001,
RESET_PLAYER_ACCESS_RIGHT = 0x00000002,
SEND_CHAT_ACCESS_RIGHT = 0x00000004,
DRAIN_ACCESS_RIGHT = 0x00000008,
ADJUST_SCORE_ACCESS_RIGHT = 0x00000010,
SEE_PLAYER_INFO_ACCESS_RIGHT = 0x00000020,
ADD_ACCOUNT_ACCESS_RIGHT = 0x00000040,
REMOVE_ACCOUNT_ACCESS_RIGHT = 0x00000080,
ADMIN_LINK_ACCESS_RIGHT = 0x00000100,
ADMIN_LOG_ACCESS_RIGHT = 0x00000200,
HIDE_PLAYER_ACCESS_RIGHT = 0x00000400,
)
BASE_ADMIN_ACCESS_RIGHTS = \
rights['SEE_PLAYER_INFO_ACCESS_RIGHT'] | \
rights['BLOCK_PLAYER_ACCESS_RIGHT'] | \
rights['ADMIN_LINK_ACCESS_RIGHT'] | \
rights['ADJUST_SCORE_ACCESS_RIGHT'] | \
rights['ADMIN_LOG_ACCESS_RIGHT'] | \
rights['HIDE_PLAYER_ACCESS_RIGHT']
BASE_ADMIN_ACCESS_RIGHTS_PLUS = \
BASE_ADMIN_ACCESS_RIGHTS | \
rights['SEND_CHAT_ACCESS_RIGHT'] | \
rights['DRAIN_ACCESS_RIGHT']
class Account(object):
def __init__(self, account):
self.__dict__['account'] = account
def __getattr__(self, name):
if name == 'name':
return self.account.nickname
try:
return (self.account.access_rights & rights[name]) != 0
except:
raise AttributeError
def __setattr__(self, name, value):
try:
self.account.access_rights &= ~rights[name]
if value:
self.account.access_rights |= rights[name]
except:
raise AttributeError
def save(self):
self.account.put()
def load(user):
logging.info('nickname=' + user.nickname())
key = models.accountmodel_key(user.nickname())
if users.is_current_user_admin():
account = models.AccountModel(key_name=key.name())
account.nickname = user.nickname()
account.access_rights = -1
else:
account = models.AccountModel.get(key)
if account:
return Account(account)
return None
def account():
user = None
try:
user = users.get_current_user()
except:
user = None
if not user:
return None
return load(user)