This commit is contained in:
long2ice
2021-05-14 22:38:01 +08:00
parent 07712ce4c2
commit 50ebd3d864
7 changed files with 18 additions and 21 deletions

View File

@ -6,8 +6,7 @@ from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware from starlette.middleware.cors import CORSMiddleware
from starlette.responses import RedirectResponse from starlette.responses import RedirectResponse
from starlette.staticfiles import StaticFiles from starlette.staticfiles import StaticFiles
from starlette.status import (HTTP_403_FORBIDDEN, HTTP_404_NOT_FOUND, from starlette.status import HTTP_403_FORBIDDEN, HTTP_404_NOT_FOUND, HTTP_500_INTERNAL_SERVER_ERROR
HTTP_500_INTERNAL_SERVER_ERROR)
from tortoise.contrib.fastapi import register_tortoise from tortoise.contrib.fastapi import register_tortoise
from examples import settings from examples import settings
@ -15,9 +14,11 @@ from examples.constants import BASE_DIR
from examples.models import Admin from examples.models import Admin
from examples.providers import LoginProvider from examples.providers import LoginProvider
from fastapi_admin.app import app as admin_app from fastapi_admin.app import app as admin_app
from fastapi_admin.exceptions import (forbidden_error_exception, from fastapi_admin.exceptions import (
not_found_error_exception, forbidden_error_exception,
server_error_exception) not_found_error_exception,
server_error_exception,
)
def create_app(): def create_app():

View File

@ -25,8 +25,8 @@ async def get_model_resource(request: Request, model=Depends(get_model)):
raise HTTPException(status_code=HTTP_404_NOT_FOUND) raise HTTPException(status_code=HTTP_404_NOT_FOUND)
actions = await model_resource.get_actions(request) actions = await model_resource.get_actions(request)
bulk_actions = await model_resource.get_bulk_actions(request) bulk_actions = await model_resource.get_bulk_actions(request)
model_resource.actions = actions setattr(model_resource, "actions", actions)
model_resource.bulk_actions = bulk_actions setattr(model_resource, "bulk_actions", bulk_actions)
return model_resource return model_resource

View File

@ -4,8 +4,7 @@ from typing import Type
from aioredis import Redis from aioredis import Redis
from fastapi import Depends, Form from fastapi import Depends, Form
from starlette.middleware.base import (BaseHTTPMiddleware, from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
RequestResponseEndpoint)
from starlette.requests import Request from starlette.requests import Request
from starlette.responses import RedirectResponse from starlette.responses import RedirectResponse
from starlette.status import HTTP_303_SEE_OTHER, HTTP_401_UNAUTHORIZED from starlette.status import HTTP_303_SEE_OTHER, HTTP_401_UNAUTHORIZED

View File

@ -6,8 +6,7 @@ from starlette.requests import Request
from tortoise import ForeignKeyFieldInstance, ManyToManyFieldInstance from tortoise import ForeignKeyFieldInstance, ManyToManyFieldInstance
from tortoise import Model as TortoiseModel from tortoise import Model as TortoiseModel
from tortoise.fields import BooleanField, DateField, DatetimeField, JSONField from tortoise.fields import BooleanField, DateField, DatetimeField, JSONField
from tortoise.fields.data import (CharEnumFieldInstance, IntEnumFieldInstance, from tortoise.fields.data import CharEnumFieldInstance, IntEnumFieldInstance, IntField, TextField
IntField, TextField)
from tortoise.queryset import QuerySet from tortoise.queryset import QuerySet
from fastapi_admin.enums import Method from fastapi_admin.enums import Method
@ -90,7 +89,9 @@ class Model(Resource):
async def get_actions(self, request: Request) -> List[Action]: async def get_actions(self, request: Request) -> List[Action]:
return [ return [
Action(label=_("update"), icon="ti ti-edit", name="update", method=Method.PUT), Action(
label=_("update"), icon="ti ti-edit", name="update", method=Method.GET, ajax=False
),
Action(label=_("delete"), icon="ti ti-trash", name="delete", method=Method.DELETE), Action(label=_("delete"), icon="ti ti-trash", name="delete", method=Method.DELETE),
] ]

View File

@ -106,7 +106,7 @@ async def update(
.get() .get()
.prefetch_related(*model_resource.get_m2m_field()) .prefetch_related(*model_resource.get_m2m_field())
) )
inputs = await model_resource.get_inputs(obj) inputs = await model_resource.get_inputs(request, obj)
if "save" in form.keys(): if "save" in form.keys():
context = { context = {
"request": request, "request": request,
@ -142,7 +142,7 @@ async def update_view(
model=Depends(get_model), model=Depends(get_model),
): ):
obj = await model.get(pk=pk) obj = await model.get(pk=pk)
inputs = await model_resource.get_inputs(obj) inputs = await model_resource.get_inputs(request, obj)
context = { context = {
"request": request, "request": request,
"resources": resources, "resources": resources,

View File

@ -4,7 +4,7 @@ from datetime import date
from typing import Any, List from typing import Any, List
from urllib.parse import urlencode from urllib.parse import urlencode
from jinja2 import contextfilter from jinja2 import pass_context
from starlette.requests import Request from starlette.requests import Request
from starlette.templating import Jinja2Templates from starlette.templating import Jinja2Templates
@ -19,11 +19,9 @@ templates.env.globals["VERSION"] = VERSION
templates.env.globals["NOW_YEAR"] = date.today().year templates.env.globals["NOW_YEAR"] = date.today().year
templates.env.add_extension("jinja2.ext.i18n") templates.env.add_extension("jinja2.ext.i18n")
templates.env.add_extension("jinja2.ext.autoescape") templates.env.add_extension("jinja2.ext.autoescape")
templates.env.add_extension("jinja2.ext.with_")
templates.env.add_extension("jinja2.ext.do")
@contextfilter @pass_context
def current_page_with_params(context: dict, params: dict): def current_page_with_params(context: dict, params: dict):
request = context.get("request") # type:Request request = context.get("request") # type:Request
full_path = request.scope["raw_path"].decode() full_path = request.scope["raw_path"].decode()

View File

@ -2,9 +2,7 @@
<label class="form-label">{{ label }}</label> <label class="form-label">{{ label }}</label>
<textarea {% if not null %}required{% endif %} class="form-control" name="{{ name }}" <textarea {% if not null %}required{% endif %} class="form-control" name="{{ name }}"
placeholder="{{ placeholder }}" placeholder="{{ placeholder }}"
{% if disabled %}disabled{% endif %}> {% if disabled %}disabled{% endif %}>{{ value }}</textarea>
{{ value }}
</textarea>
{% if help_text %} {% if help_text %}
<small class="form-hint"> <small class="form-hint">
{{ help_text }} {{ help_text }}