diff --git a/doc/changelog.rst b/doc/changelog.rst index 8f501453b..452a889e0 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -18,9 +18,10 @@ Bugfixes: Type hints: -* Type hints added to all functions and methods (some using `typing.Any` where full typing not yet available) +* Type hints added to all functions and methods (some still use `typing.Any` where full typing not yet available) * Updated InlineBaseFormAdmin.get_form() to return type[BaseForm] | None rather than T_MODEL_VIEW | None * Minor type hinting improvements for peewee backend +* Admin(index_view=...) now accepts a BaseView instance rather than AdminIndexView, allowing e.g. FileAdmin 2.2.0 ------------------ diff --git a/flask_admin/base.py b/flask_admin/base.py index 90faf838d..85f7c72fb 100644 --- a/flask_admin/base.py +++ b/flask_admin/base.py @@ -548,7 +548,7 @@ def __init__( name: str | None = None, url: str | None = None, subdomain: str | None = None, - index_view: AdminIndexView | None = None, + index_view: BaseView | None = None, translations_path: str | None = None, endpoint: str | None = None, static_url_path: str | None = None, @@ -667,7 +667,7 @@ def add_view(self, view: BaseView) -> None: def _set_admin_index_view( self, - index_view: AdminIndexView | None = None, + index_view: BaseView | None = None, endpoint: str | None = None, url: str | None = None, ) -> None: @@ -683,7 +683,7 @@ def _set_admin_index_view( `Admin` class with a single Flask application, you have to set a unique endpoint name for each instance. """ - self.index_view: AdminIndexView = ( # type: ignore[no-redef] + self.index_view: BaseView = ( # type: ignore[no-redef] index_view or AdminIndexView(endpoint=endpoint, url=url) ) self.endpoint = endpoint or self.index_view.endpoint @@ -856,7 +856,7 @@ def get_category_menu_item(self, name: str) -> MenuCategory | None: def init_app( self, app: Flask, - index_view: AdminIndexView | None = None, + index_view: BaseView | None = None, endpoint: str | None = None, url: str | None = None, ) -> None: diff --git a/flask_admin/tests/test_base.py b/flask_admin/tests/test_base.py index 80e903889..3933ad4c7 100644 --- a/flask_admin/tests/test_base.py +++ b/flask_admin/tests/test_base.py @@ -116,7 +116,10 @@ def test_base_defaults() -> None: assert admin.endpoint == "admin" assert admin.app is None assert admin.index_view is not None - assert admin.index_view._template == "admin/index.html" + assert ( + isinstance(admin.index_view, base.AdminIndexView) + and admin.index_view._template == "admin/index.html" + ) # Check if default view was added assert len(admin._views) == 1