From 717c02bdd7de304f5674badf1fbd73d703b3f4cd Mon Sep 17 00:00:00 2001 From: Luna Date: Mon, 22 Apr 2019 01:45:26 -0300 Subject: [PATCH] admin_schemas: fix USER_UPDATE's coerce - admin_api.users: fix missing attrs / wrong calls - enums: add Flags.value attr for an instantiated Flags --- litecord/admin_schemas.py | 2 +- litecord/blueprints/admin_api/users.py | 9 +++++---- litecord/enums.py | 2 ++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/litecord/admin_schemas.py b/litecord/admin_schemas.py index 2796ba1..22d6bdb 100644 --- a/litecord/admin_schemas.py +++ b/litecord/admin_schemas.py @@ -56,5 +56,5 @@ GUILD_UPDATE = { } USER_UPDATE = { - 'flags': {'required': False, 'coerce': UserFlags} + 'flags': {'required': False, 'coerce': UserFlags.from_int} } diff --git a/litecord/blueprints/admin_api/users.py b/litecord/blueprints/admin_api/users.py index 3260970..ab3ba37 100644 --- a/litecord/blueprints/admin_api/users.py +++ b/litecord/blueprints/admin_api/users.py @@ -129,20 +129,21 @@ async def patch_user(user_id: int): # get the original user for flags checking user = await app.storage.get_user(user_id) - old_flags = UserFlags(user['flags']) + old_flags = UserFlags.from_int(user['flags']) + # j.flags is already a UserFlags since we coerce it. if 'flags' in j: - new_flags = UserFlags(j['flags']) + new_flags = j['flags'] # disallow any changes to the staff badge - if new_flags.staff != old_flags.staff: + if new_flags.is_staff != old_flags.is_staff: raise Forbidden('you can not change a users staff badge') await app.db.execute(""" UPDATE users SET flags = $1 WHERE id = $2 - """, j['flags'], user_id) + """, new_flags.value, user_id) public_user, _ = await mass_user_update(user_id, app) return jsonify(public_user) diff --git a/litecord/enums.py b/litecord/enums.py index 52cd742..98e036c 100644 --- a/litecord/enums.py +++ b/litecord/enums.py @@ -58,6 +58,8 @@ class Flags: def _make_int(value): res = Flags() + setattr(res, 'value', value) + for attr, val in attrs: # get only the ones that represent a field in the # number's bits