feat: remove aioredis to redis

This commit is contained in:
Jinlong Peng
2022-07-25 18:25:04 +08:00
parent 5b359e91b1
commit 5f34bf0d73
9 changed files with 198 additions and 573 deletions

View File

@@ -1,6 +1,6 @@
import os
import aioredis
import redis.asyncio as redis
import uvicorn
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
@@ -46,7 +46,7 @@ def create_app():
@app.on_event("startup")
async def startup():
redis = aioredis.from_url(
r = redis.from_url(
settings.REDIS_URL,
decode_responses=True,
encoding="utf8",
@@ -61,7 +61,7 @@ def create_app():
admin_model=Admin,
)
],
redis=redis,
redis=r,
)
app.mount("/admin", admin_app)

View File

@@ -1,6 +1,6 @@
from typing import Dict, List, Optional, Type
from aioredis import Redis
import redis.asyncio as redis
from fastapi import FastAPI
from pydantic import HttpUrl
from starlette.middleware.base import BaseHTTPMiddleware
@@ -22,13 +22,13 @@ class FastAPIAdmin(FastAPI):
admin_path: str
resources: List[Type[Resource]] = []
model_resources: Dict[Type[Model], Type[Resource]] = {}
redis: Redis
redis: redis.Redis
language_switch: bool = True
favicon_url: Optional[HttpUrl] = None
async def configure(
self,
redis: Redis,
redis: redis.Redis,
logo_url: str = None,
default_locale: str = "en_US",
language_switch: bool = True,

View File

@@ -12,7 +12,7 @@ class FileUpload:
self,
uploads_dir: str,
allow_extensions: Optional[List[str]] = None,
max_size: int = 1024 ** 3,
max_size: int = 1024**3,
filename_generator: Optional[Callable] = None,
prefix: str = "/static/uploads",
):

View File

@@ -2,7 +2,7 @@ import typing
import uuid
from typing import Type
from aioredis import Redis
import redis.asyncio as redis
from fastapi import Depends, Form
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
from starlette.requests import Request
@@ -77,7 +77,7 @@ class UsernamePasswordProvider(Provider):
else:
instance.password = hash_password(instance.password)
async def login(self, request: Request, redis: Redis = Depends(get_redis)):
async def login(self, request: Request, redis: redis.Redis = Depends(get_redis)):
form = await request.form()
username = form.get("username")
password = form.get("password")

View File

@@ -140,7 +140,7 @@ class Model(Resource):
and name in obj._meta.fk_fields
):
await obj.fetch_related(name)
# Value must be the string representation of the fk obj
# Value must be the string representation of the fk obj
value = str(getattr(obj, name, None))
ret.append(await input_.render(request, value))
continue
@@ -314,6 +314,7 @@ class Model(Resource):
ret.append(field)
return ret
class Dropdown(Resource):
resources: List[Type[Resource]]

View File

@@ -30,9 +30,7 @@ async def list_view(
fields = model_resource.get_fields()
fk_fields = model_resource.get_fk_field()
qs = model.all()
params, qs = await model_resource.resolve_query_params(
request, dict(request.query_params), qs
)
params, qs = await model_resource.resolve_query_params(request, dict(request.query_params), qs)
filters = await model_resource.get_filters(request, params)
total = await qs.count()
if page_size:
@@ -257,14 +255,10 @@ async def create(
@router.delete("/{resource}/delete/{pk}")
async def delete(request: Request, pk: str, model: Model = Depends(get_model)):
await model.filter(pk=pk).delete()
return RedirectResponse(
url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER
)
return RedirectResponse(url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER)
@router.delete("/{resource}/delete")
async def bulk_delete(request: Request, ids: str, model: Model = Depends(get_model)):
await model.filter(pk__in=ids.split(",")).delete()
return RedirectResponse(
url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER
)
return RedirectResponse(url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER)

View File

@@ -205,7 +205,9 @@ class Boolean(Select):
return options
async def get_queryset(self, request: Request, value: str, qs: QuerySet[Model]) -> QuerySet[Model]:
async def get_queryset(
self, request: Request, value: str, qs: QuerySet[Model]
) -> QuerySet[Model]:
"""Return filtered queryset."""
filters = {self.context.get("name"): (value == "true")}
return qs.filter(**filters)

730
poetry.lock generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,7 @@ version = "1.0.4"
[tool.poetry.dependencies]
Babel = "*"
aiofiles = "*"
aioredis = "*"
redis = "^4.2.0rc1"
bcrypt = "*"
fastapi = "*"
jinja2 = "*"
@@ -43,12 +43,12 @@ pytest-xdist = "*"
black = "*"
flake8 = "*"
isort = "*"
mypy = "*"
pylint = "*"
# example
asyncmy = "*"
asyncpg = "*"
python-dotenv = "*"
mypy = "*"
[build-system]
build-backend = "poetry.core.masonry.api"