Pārlūkot izejas kodu

Merge pull request #27 from librellium/refactor/composition-root

Refactor/composition root
Librellium 1 nedēļu atpakaļ
vecāks
revīzija
150117a8b6

+ 3 - 0
anonflow/app/__init__.py

@@ -0,0 +1,3 @@
+from .app import Application
+
+__all__ = ["Application"]

+ 7 - 24
anonflow/app.py → anonflow/app/app.py

@@ -1,16 +1,11 @@
 import logging
-from contextlib import contextmanager
-from typing import Any, Generator, Optional
+from typing import Optional
 
 from aiogram import Bot, Dispatcher
 from aiogram.client.bot import DefaultBotProperties
 from aiogram.fsm.storage.memory import MemoryStorage
 
-from anonflow import __version_str__
-from anonflow.bot.builders import (
-    build_middlewares,
-    build_routers
-)
+from anonflow import __version_str__, paths
 from anonflow.bot.transport import (
     DeliveryService,
     ResponsesRouter
@@ -34,24 +29,12 @@ from anonflow.services import (
 )
 from anonflow.translator import Translator
 
-from . import paths
-
-
-class NotInitializedError(RuntimeError): ...
-
-@contextmanager
-def require(obj, *names) -> Generator[Any, Any, None]:
-    values = []
-    for name in names:
-        value = getattr(obj, name, None)
-        if value is None:
-            raise NotInitializedError(name)
-        values.append(value)
+from .builders import (
+    build_middlewares,
+    build_routers
+)
+from .helpers import require
 
-    if len(values) == 1:
-        yield values[0]
-    else:
-        yield tuple(values)
 
 class Application:
     def __init__(self):

+ 0 - 0
anonflow/bot/builders/__init__.py → anonflow/app/builders/__init__.py


+ 0 - 0
anonflow/bot/builders/middlewares.py → anonflow/app/builders/middlewares.py


+ 0 - 0
anonflow/bot/builders/routers.py → anonflow/app/builders/routers.py


+ 1 - 0
anonflow/app/exceptions.py

@@ -0,0 +1 @@
+class NotInitializedError(RuntimeError): ...

+ 19 - 0
anonflow/app/helpers.py

@@ -0,0 +1,19 @@
+from contextlib import contextmanager
+from typing import Any, Generator
+
+from .exceptions import NotInitializedError
+
+
+@contextmanager
+def require(obj, *names) -> Generator[Any, Any, None]:
+    values = []
+    for name in names:
+        value = getattr(obj, name, None)
+        if value is None:
+            raise NotInitializedError(name)
+        values.append(value)
+
+    if len(values) == 1:
+        yield values[0]
+    else:
+        yield tuple(values)

+ 7 - 5
anonflow/services/moderator/service.py

@@ -55,12 +55,14 @@ class ModeratorService:
 
     async def _can(self, session: AsyncSession, actor_user_id: int, permission: ModeratorPermission) -> bool:
         moderator = await self._moderator_repository.get(session, actor_user_id)
-        if moderator:
-            if moderator.is_root.value:
-                return True
-            return getattr(moderator, permission, False)
 
-        return False
+        if not moderator:
+            return False
+
+        if bool(moderator.is_root):
+            return True
+
+        return getattr(moderator, permission, False)
 
     async def can(self, actor_user_id: int, permission: ModeratorPermission):
         async with self._database.get_session() as session: