Newer
Older
from hashlib import blake2b
db.define_table(
'Room',
Field('code', 'string', notnull=True, unique=True),
Field('hashcode', 'string', notnull=True),
Field('player_max', 'integer', notnull=True),
Field('creation', 'datetime', default=request.now, notnull=True),
Field('heartbeat', 'datetime', default=request.now, notnull=True),
Field('started', 'boolean', default=False),
Field('roles', 'text', default=base64.standard_b64encode(b'{}'), notnull=True),
Field('closed', 'boolean', default=False)
def generateRoomCode():
while not code or db((db.Room.code == code) & (db.Room.closed == False)).count() > 0:
code = ""
for i in range(4):
# Removed characters which could be confused like 0 and O
code = code + random.choice("346789ABCDEFGHJKLMNPQRTUVWXY")
return(code)
def generateHashCode():
digest = blake2b(digest_size=32)
digest.update(str(request.now).encode("utf-8"))
digest.update(str(random.random()).encode("utf-8"))
return (digest.hexdigest())
db.Room.code.default = generateRoomCode
db.Room.hashcode.default = generateHashCode