📝 Few small improvements

This commit is contained in:
Brian Wiborg 2025-09-27 16:32:03 +02:00
parent 42f7713345
commit 20a826e8c0
No known key found for this signature in database

View file

@ -242,7 +242,7 @@ from ohmyapi_auth import (
from .models import Tournament from .models import Tournament
router = APIRouter(prefix="/tournament") router = APIRouter(prefix="/tournament", tags=["Tournament"])
@router.get("/") @router.get("/")
@ -260,10 +260,11 @@ Use Tortoise's `Manager` to implement model-level permissions.
```python ```python
from ohmyapi.db import Manager from ohmyapi.db import Manager
from ohmyapi_auth.models import User
class TeamManager(Manager): class TeamManager(Manager):
async def for_user(self, user: ohmyapi_auth.models.User): async def for_user(self, user: User):
return await self.filter(members=user).all() return await self.filter(members=user).all()
@ -274,6 +275,24 @@ class Team(Model):
manager = TeamManager() manager = TeamManager()
``` ```
Use the custom manager in your FastAPI route handler:
```python
from ohmyapi.router import APIRouter
from ohmyapi_auth import (
models as auth,
permissions,
)
router = APIRouter(prefix="/tournament", tags=["Tournament"])
@router.get("/teams")
async def teams(user: auth.User = Depends(permissions.require_authenticated)):
queryset = Team.for_user(user)
return await Tournament.Schema.many.from_queryset(queryset)
```
## Shell ## Shell
Similar to Django, you can attach to an interactive shell with your project already loaded inside. Similar to Django, you can attach to an interactive shell with your project already loaded inside.