From 799dfdb2ac0da412d1d43a870c3bc60845d1547b Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 19 Feb 2018 22:17:54 +0200 Subject: [PATCH] Use correct defaults in has_power_level() --- mautrix_appservice/intent_api.py | 7 ++++--- mautrix_appservice/state_store.py | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/mautrix_appservice/intent_api.py b/mautrix_appservice/intent_api.py index d0979476..94b894b0 100644 --- a/mautrix_appservice/intent_api.py +++ b/mautrix_appservice/intent_api.py @@ -467,7 +467,7 @@ class IntentAPI: elif not event_type: raise ValueError("Event type not given") await self.ensure_joined(room_id) - await self._ensure_has_power_level_for(room_id, event_type) + await self._ensure_has_power_level_for(room_id, event_type, is_state_event=True) url = self._get_state_url(room_id, event_type, state_key) return await self.client.request("PUT", url, content) @@ -555,7 +555,7 @@ class IntentAPI: return self.state_store.registered(self.mxid) - async def _ensure_has_power_level_for(self, room_id, event_type): + async def _ensure_has_power_level_for(self, room_id, event_type, is_state_event=False): if not room_id: raise ValueError("Room ID not given") elif not event_type: @@ -563,7 +563,8 @@ class IntentAPI: if not self.state_store.has_power_levels(room_id): await self.get_power_levels(room_id) - if self.state_store.has_power_level(room_id, self.mxid, event_type): + if self.state_store.has_power_level(room_id, self.mxid, event_type, + is_state_event=is_state_event): return elif not self.bot: self.log.warning( diff --git a/mautrix_appservice/state_store.py b/mautrix_appservice/state_store.py index 23f43b0d..b5421cd5 100644 --- a/mautrix_appservice/state_store.py +++ b/mautrix_appservice/state_store.py @@ -127,10 +127,12 @@ class StateStore: def get_power_levels(self, room): return self.power_levels[room] - def has_power_level(self, room, user, event): + def has_power_level(self, room, user, event, is_state_event=False): room_levels = self.power_levels.get(room, {}) - required = room_levels.get("events", {}).get(event, 95) - has = room_levels.get("users", {}).get(user, 0) + default_required = (room_levels.get("state_default", 50) if is_state_event + else room_levels.get("events_default", 0)) + required = room_levels.get("events", {}).get(event, default_required) + has = room_levels.get("users", {}).get(user, room_levels.get("users_default", 0)) return has >= required def set_power_level(self, room, user, level):