Newer
Older
import random
from hashlib import blake2b
db.define_table(
'Room',
Field('code', 'string', notnull=True, requires=IS_NOT_EMPTY(), writable=False, unique=True),
Field('hashcode', 'string', notnull=True, requires=IS_NOT_EMPTY(), writable=False),
Field('player_max', 'integer', notnull=True, requires=IS_NOT_EMPTY()),
Field('creation', 'datetime', default=request.now, notnull=True, requires=IS_NOT_EMPTY()),
Field('heartbeat', 'datetime', default=request.now, notnull=True, requires=IS_NOT_EMPTY())
)
def generateRoomCode(_record):
code = None
while not code or db(db.Room.code == code).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(_record):
code = ""
digest = blake2b(digest_size=32)
digest.update(_record.code.encode("utf-8"))
digest.update(str(_record.player_max).encode("utf-8"))
digest.update(str(_record.creation).encode("utf-8"))
digest.update(str(random.random()).encode("utf-8"))
return (digest.hexdigest())
db.Room.code.compute = generateRoomCode
db.Room.hashcode.compute = generateHashCode