From 82ea496f0d30b35ade2a8b9218523abd73ff35cb Mon Sep 17 00:00:00 2001 From: retoor Date: Sat, 3 Jan 2026 15:06:47 +0100 Subject: [PATCH] chore: update py files --- CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- src/snek/view/rpc.py | 30 +++++++++++++++--------------- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09add84..4a6fc40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,14 @@ + + +## Version 1.23.0 - 2026-01-03 + +update py files + +**Changes:** 1 files, 30 lines +**Languages:** Python (30 lines) ## Version 1.22.0 - 2026-01-03 diff --git a/pyproject.toml b/pyproject.toml index b076cb4..6e3a78d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "Snek" -version = "1.22.0" +version = "1.23.0" readme = "README.md" #license = { file = "LICENSE", content-type="text/markdown" } description = "Snek Chat Application by Molodetz" diff --git a/src/snek/view/rpc.py b/src/snek/view/rpc.py index b075aa1..d54ded5 100644 --- a/src/snek/view/rpc.py +++ b/src/snek/view/rpc.py @@ -960,7 +960,7 @@ class RPCView(BaseView): logger.warning(f"stars_render failed: {safe_str(ex)}") return False - async def createChannel(self, name, description=None, is_private=False): + async def create_channel(self, name, description=None, is_private=False): self._require_login() self._require_services() if not name or not isinstance(name, str): @@ -993,7 +993,7 @@ class RPCView(BaseView): logger.warning(f"Failed to create channel: {safe_str(ex)}") return {"error": safe_str(ex), "success": False} - async def inviteUser(self, channel_uid, username): + async def invite_user(self, channel_uid, username): self._require_login() self._require_services() if not channel_uid or not isinstance(channel_uid, str): @@ -1028,7 +1028,7 @@ class RPCView(BaseView): logger.warning(f"Failed to invite user: {safe_str(ex)}") return {"error": "Failed to invite user", "success": False} - async def leaveChannel(self, channel_uid): + async def leave_channel(self, channel_uid): self._require_login() self._require_services() if not channel_uid or not isinstance(channel_uid, str): @@ -1052,7 +1052,7 @@ class RPCView(BaseView): logger.warning(f"Failed to leave channel: {safe_str(ex)}") return {"error": "Failed to leave channel", "success": False} - async def updateChannel(self, channel_uid, name, description=None, is_private=False): + async def update_channel(self, channel_uid, name, description=None, is_private=False): self._require_login() self._require_services() if not channel_uid or not isinstance(channel_uid, str): @@ -1063,16 +1063,16 @@ class RPCView(BaseView): if not name: return {"error": "Channel name cannot be empty", "success": False} try: - channel_member = await self.services.channel_member.get( - channel_uid=channel_uid, user_uid=self.user_uid - ) - if not channel_member or not channel_member["is_moderator"]: - return {"error": "Only moderators can update channel settings", "success": False} channel = await self.services.channel.get(uid=channel_uid) if not channel: return {"error": "Channel not found", "success": False} if channel["tag"] == "public": return {"error": "Cannot modify the public channel", "success": False} + is_creator = channel.get("created_by_uid") == self.user_uid + user = await self.services.user.get(uid=self.user_uid) + is_admin = user and user.get("is_admin", False) + if not is_creator and not is_admin: + return {"error": "Only the channel creator or admin can update channel settings", "success": False} if not name.startswith("#") and channel["is_listed"]: name = f"#{name}" channel["label"] = name @@ -1089,22 +1089,22 @@ class RPCView(BaseView): logger.warning(f"Failed to update channel: {safe_str(ex)}") return {"error": "Failed to update channel", "success": False} - async def deleteChannel(self, channel_uid): + async def delete_channel(self, channel_uid): self._require_login() self._require_services() if not channel_uid or not isinstance(channel_uid, str): return {"error": "Invalid channel", "success": False} try: - channel_member = await self.services.channel_member.get( - channel_uid=channel_uid, user_uid=self.user_uid - ) - if not channel_member or not channel_member["is_moderator"]: - return {"error": "Only moderators can delete channels", "success": False} channel = await self.services.channel.get(uid=channel_uid) if not channel: return {"error": "Channel not found", "success": False} if channel["tag"] == "public": return {"error": "Cannot delete the public channel", "success": False} + is_creator = channel.get("created_by_uid") == self.user_uid + user = await self.services.user.get(uid=self.user_uid) + is_admin = user and user.get("is_admin", False) + if not is_creator and not is_admin: + return {"error": "Only the channel creator or admin can delete channels", "success": False} channel["deleted_at"] = now() await self.services.channel.save(channel) async for member in self.services.channel_member.find(