Use correct defaults in has_power_level()

This commit is contained in:
Tulir Asokan
2018-02-19 22:17:54 +02:00
parent 092b80ad02
commit 799dfdb2ac
2 changed files with 9 additions and 6 deletions
+4 -3
View File
@@ -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(
+5 -3
View File
@@ -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):