|
|
@@ -1,4 +1,3 @@
|
|
|
-from dataclasses import dataclass
|
|
|
from typing import Optional
|
|
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
@@ -9,12 +8,6 @@ from anonflow.database.orm import Moderator
|
|
|
from .base import BaseRepository
|
|
|
|
|
|
|
|
|
-@dataclass
|
|
|
-class ModeratorPermissions:
|
|
|
- can_approve: bool
|
|
|
- can_ban: bool
|
|
|
- can_manage_moderators: bool
|
|
|
-
|
|
|
class ModeratorRepository(BaseRepository):
|
|
|
model = Moderator
|
|
|
|
|
|
@@ -22,18 +15,13 @@ class ModeratorRepository(BaseRepository):
|
|
|
self,
|
|
|
session: AsyncSession,
|
|
|
user_id: int,
|
|
|
- *,
|
|
|
- can_approve_posts: bool = True,
|
|
|
- can_manage_bans: bool = False,
|
|
|
- can_manage_moderators: bool = False
|
|
|
+ **fields
|
|
|
):
|
|
|
await super()._add(
|
|
|
session,
|
|
|
model_args={
|
|
|
"user_id": user_id,
|
|
|
- "can_approve_posts": can_approve_posts,
|
|
|
- "can_manage_bans": can_manage_bans,
|
|
|
- "can_manage_moderators": can_manage_moderators
|
|
|
+ **fields
|
|
|
}
|
|
|
)
|
|
|
|
|
|
@@ -46,15 +34,6 @@ class ModeratorRepository(BaseRepository):
|
|
|
]
|
|
|
)
|
|
|
|
|
|
- async def get_permissions(self, session: AsyncSession, user_id: int):
|
|
|
- result = await self.get(session, user_id)
|
|
|
- if result:
|
|
|
- return ModeratorPermissions(
|
|
|
- result.can_approve_posts.value,
|
|
|
- result.can_manage_bans.value,
|
|
|
- result.can_manage_moderators.value
|
|
|
- )
|
|
|
-
|
|
|
async def has(self, session: AsyncSession, user_id: int):
|
|
|
return await super()._has(
|
|
|
session,
|
|
|
@@ -73,27 +52,3 @@ class ModeratorRepository(BaseRepository):
|
|
|
filters={"user_id": user_id},
|
|
|
fields=fields
|
|
|
)
|
|
|
-
|
|
|
- async def update_permissions(
|
|
|
- self,
|
|
|
- session: AsyncSession,
|
|
|
- user_id: int,
|
|
|
- *,
|
|
|
- can_approve_posts: Optional[bool] = None,
|
|
|
- can_manage_bans: Optional[bool] = None,
|
|
|
- can_manage_moderators: Optional[bool] = None
|
|
|
- ):
|
|
|
- to_update = {}
|
|
|
- for key, value in (
|
|
|
- ("can_approve_posts", can_approve_posts),
|
|
|
- ("can_manage_bans", can_manage_bans),
|
|
|
- ("can_manage_moderators", can_manage_moderators),
|
|
|
- ):
|
|
|
- if value is not None:
|
|
|
- to_update[key] = value
|
|
|
-
|
|
|
- await self.update(
|
|
|
- session,
|
|
|
- user_id,
|
|
|
- **to_update
|
|
|
- )
|