diff --git a/docs/cookbook/displaying_one_time_secrets.md b/docs/cookbook/displaying_one_time_secrets.md index 9085c4c3..5ab524e2 100644 --- a/docs/cookbook/displaying_one_time_secrets.md +++ b/docs/cookbook/displaying_one_time_secrets.md @@ -43,7 +43,7 @@ built-in create/edit handlers stamp anti-cache headers on the response automatically; custom views must do so explicitly: ```python -response = await self.templates.TemplateResponse(request, "your_template.html", context) +response = await self.templates.TemplateResponse(request=request, name="your_template.html", context=context) Secret.apply_no_store_headers(response) return response ``` diff --git a/docs/writing_custom_views.md b/docs/writing_custom_views.md index cc73b93d..cd67334a 100644 --- a/docs/writing_custom_views.md +++ b/docs/writing_custom_views.md @@ -15,7 +15,7 @@ To add custom views to the Admin interface, you can use the `BaseView` included @expose("/report", methods=["GET"]) async def report_page(self, request): - return await self.templates.TemplateResponse(request, "report.html") + return await self.templates.TemplateResponse(request=request, name="report.html") admin.add_view(ReportView) ``` diff --git a/sqladmin/application.py b/sqladmin/application.py index 670e9fc6..0020ac06 100644 --- a/sqladmin/application.py +++ b/sqladmin/application.py @@ -283,7 +283,8 @@ class CustomAdmin(BaseView): @expose("/custom", methods=["GET"]) async def test_page(self, request: Request): - return await self.templates.TemplateResponse(request, "custom.html") + return await self.templates.TemplateResponse( + request=request, name="custom.html") admin.add_base_view(CustomAdmin) ``` @@ -508,7 +509,10 @@ async def http_exception( "message": exc.detail, } return await self.templates.TemplateResponse( - request, "sqladmin/error.html", context, status_code=exc.status_code + request=request, + name="sqladmin/error.html", + context=context, + status_code=exc.status_code, ) routes = [ @@ -573,7 +577,9 @@ async def http_exception( async def index(self, request: Request) -> Response: """Index route which can be overridden to create dashboards.""" - return await self.templates.TemplateResponse(request, "sqladmin/index.html") + return await self.templates.TemplateResponse( + request=request, name="sqladmin/index.html" + ) @login_required async def list(self, request: Request) -> Response: @@ -604,7 +610,7 @@ async def list(self, request: Request) -> Response: context["error"] = request.query_params["error"] return await self.templates.TemplateResponse( - request, model_view.list_template, context + request=request, name=model_view.list_template, context=context ) @login_required @@ -625,7 +631,7 @@ async def details(self, request: Request) -> Response: } return await self.templates.TemplateResponse( - request, model_view.details_template, context + request=request, name=model_view.details_template, context=context ) @login_required @@ -678,7 +684,9 @@ async def _resolve_after_change_response( context["secret_next_url"] = str( request.url_for("admin:list", identity=identity) ) - response = await self.templates.TemplateResponse(request, template, context) + response = await self.templates.TemplateResponse( + request=request, name=template, context=context + ) Secret.apply_no_store_headers(response) return response @@ -701,7 +709,7 @@ async def create(self, request: Request) -> Response: "form": form, } return await self.templates.TemplateResponse( - request, model_view.create_template, context + request=request, name=model_view.create_template, context=context ) form_data = await self._handle_form_data(request) @@ -714,7 +722,10 @@ async def create(self, request: Request) -> Response: if not form.validate(): return await self.templates.TemplateResponse( - request, model_view.create_template, context, status_code=400 + request=request, + name=model_view.create_template, + context=context, + status_code=400, ) form_data_dict = self._denormalize_wtform_data(form.data, model_view.model) @@ -724,7 +735,10 @@ async def create(self, request: Request) -> Response: logger.exception(e) context["error"] = str(e) return await self.templates.TemplateResponse( - request, model_view.create_template, context, status_code=400 + request=request, + name=model_view.create_template, + context=context, + status_code=400, ) override = await self._resolve_after_change_response( @@ -763,7 +777,7 @@ async def edit(self, request: Request) -> Response: if request.method == "GET": return await self.templates.TemplateResponse( - request, model_view.edit_template, context + request=request, name=model_view.edit_template, context=context ) form_data = await self._handle_form_data(request, model) @@ -772,7 +786,10 @@ async def edit(self, request: Request) -> Response: if not form.validate(): return await self.templates.TemplateResponse( - request, model_view.edit_template, context, status_code=400 + request=request, + name=model_view.edit_template, + context=context, + status_code=400, ) form_data_dict = self._denormalize_wtform_data(form.data, model) @@ -787,7 +804,10 @@ async def edit(self, request: Request) -> Response: logger.exception(e) context["error"] = str(e) return await self.templates.TemplateResponse( - request, model_view.edit_template, context, status_code=400 + request=request, + name=model_view.edit_template, + context=context, + status_code=400, ) override = await self._resolve_after_change_response( @@ -855,13 +875,18 @@ async def login(self, request: Request) -> Response: context = {} if request.method == "GET": - return await self.templates.TemplateResponse(request, "sqladmin/login.html") + return await self.templates.TemplateResponse( + request=request, name="sqladmin/login.html" + ) response = await self.authentication_backend.login(request) if not response: context["error"] = "Invalid credentials." return await self.templates.TemplateResponse( - request, "sqladmin/login.html", context, status_code=400 + request=request, + name="sqladmin/login.html", + context=context, + status_code=400, ) if isinstance(response, Response): diff --git a/sqladmin/models.py b/sqladmin/models.py index 8c62773c..483d3eed 100644 --- a/sqladmin/models.py +++ b/sqladmin/models.py @@ -169,7 +169,8 @@ class CustomAdmin(BaseView): @expose("/custom", methods=["GET"]) async def test_page(self, request: Request): - return await self.templates.TemplateResponse(request, "custom.html") + return await self.templates.TemplateResponse( + request=request, name="custom.html") admin.add_base_view(CustomAdmin) ``` diff --git a/tests/test_base_view.py b/tests/test_base_view.py index 6ff961b8..614f9798 100644 --- a/tests/test_base_view.py +++ b/tests/test_base_view.py @@ -21,17 +21,23 @@ class CustomAdmin(BaseView): @expose("/custom", methods=["GET"]) async def custom(self, request: Request): - return await self.templates.TemplateResponse(request, "custom.html") + return await self.templates.TemplateResponse( + request=request, name="custom.html" + ) @expose("/custom/report") async def custom_report(self, request: Request): - return await self.templates.TemplateResponse(request, "custom.html") + return await self.templates.TemplateResponse( + request=request, name="custom.html" + ) # Add this for second test: Before alphabetically (!) # first `expose` was BaseView url, now it's first by `order` @expose("/a") async def a(self, request: Request): - return await self.templates.TemplateResponse(request, "custom.html") + return await self.templates.TemplateResponse( + request=request, name="custom.html" + ) @pytest.fixture @@ -69,7 +75,9 @@ class IndexNamedView(BaseView): @expose("/activity-analytics", methods=["GET"]) async def index(self, request: Request): - return await self.templates.TemplateResponse(request, "custom.html") + return await self.templates.TemplateResponse( + request=request, name="custom.html" + ) def test_menu_view_url_with_index_method(client: TestClient) -> None: diff --git a/tests/test_models.py b/tests/test_models.py index 5e0ec705..3aa1f377 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -860,7 +860,7 @@ class UserAdmin(ModelView, model=User): async def profile(self, request: Request): user: User = await self.get_object_for_edit(request) return await self.templates.TemplateResponse( - request, "user.html", {"user": user} + request=request, name="user.html", context={"user": user} ) admin.add_view(UserAdmin)