diff --git a/controllers/room.py b/controllers/room.py index b981fbdf04979cb825027d69f412abcbb7c0e133..6e2cfc82a4ed966eab2ecf03029a2a0def176215 100644 --- a/controllers/room.py +++ b/controllers/room.py @@ -1,6 +1,6 @@ from parameter_util import JSON_BODY, JSON_CONTAINS from http_util import FAIL, CODE_JSON, CODE_MISSING, CODE_SEMANTIC -from room_util import ROOM_GET +from room_util import ROOM_GET, PLAYERS_GET import random @@ -43,7 +43,8 @@ def status(): if not room_record: return(FAIL(CODE_SEMANTIC)) + players = PLAYERS_GET(room_record) - json = {"players": []} + json = {"players": players} return(response.json(json)) diff --git a/models/i_players.py b/models/i_players.py new file mode 100644 index 0000000000000000000000000000000000000000..f9af041c7c62839b176d39a31440e49d10330c4b --- /dev/null +++ b/models/i_players.py @@ -0,0 +1,16 @@ +db.define_table( + 'Player', + Field('room_id', db.Room, notnull=True), + Field('hashcode', 'string', notnull=True), + Field('name', 'string', notnull=True), + Field('role', 'string', default="idle"), + Field('creation', 'datetime', default=request.now, notnull=True) +) + +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.Player.hashcode.default = generateHashCode diff --git a/modules/room_util.py b/modules/room_util.py index c9eb7ba78047e534ce8a903b7bde9be095f068df..13290b8fb994f2490985bf05dfcd934098b5c914 100644 --- a/modules/room_util.py +++ b/modules/room_util.py @@ -10,3 +10,15 @@ def ROOM_GET(_id, _password): return(None) return(room_record) + + +def PLAYERS_GET(_room): + rows = current.db(current.db.Player.room_id == _room.id).select(orderby=current.db.Player.id) + + players = [] + player_id = 0 + for row in rows: + players.append({"id": player_id, "name": row.name, "role": row.role}) + player_id = player_id + 1 + + return(players)