Skip to content
Snippets Groups Projects
f_room.py 1.16 KiB
Newer Older
  • Learn to ignore specific revisions
  • import random
    
    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