Skip to content

Commit

Permalink
fix: addon managers import (#1920)
Browse files Browse the repository at this point in the history
  • Loading branch information
dpgaspar authored Sep 6, 2022
1 parent 49d212d commit e7692d1
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 3 deletions.
4 changes: 2 additions & 2 deletions flask_appbuilder/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,10 +332,10 @@ def _add_addon_views(self) -> None:
"""
for addon in self._addon_managers:
addon_class_ = dynamic_class_import(addon)
addon_class = cast(Type[BaseManager], addon_class_)
addon_class = cast(Type["BaseManager"], addon_class_)
if addon_class:
# Instantiate manager with appbuilder (self)
inst_addon_class: BaseManager = addon_class(self)
inst_addon_class: "BaseManager" = addon_class(self)
try:
inst_addon_class.pre_process()
inst_addon_class.register_views()
Expand Down
15 changes: 15 additions & 0 deletions flask_appbuilder/tests/A_fixture/addon_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from flask_appbuilder import BaseView, expose
from flask_appbuilder.basemanager import BaseManager


class DummyView(BaseView):
route_base = "/dummy"

@expose("/method1/<string:param1>")
def method1(self, param1):
return param1


class DummyAddOnManager(BaseManager):
def register_views(self):
self.appbuilder.add_view_no_menu(DummyView)
45 changes: 45 additions & 0 deletions flask_appbuilder/tests/test_addon.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import logging
import os

from flask_appbuilder import SQLA
from flask_appbuilder.tests.A_fixture.addon_manager import DummyAddOnManager

from .base import FABTestCase


log = logging.getLogger(__name__)


class FlaskTestCase(FABTestCase):
def setUp(self):
from flask import Flask
from flask_appbuilder import AppBuilder

self.app = Flask(__name__)
self.basedir = os.path.abspath(os.path.dirname(__file__))
self.app.config.from_object("flask_appbuilder.tests.config_api")
self.app.config["ADDON_MANAGERS"] = [
"flask_appbuilder.tests.A_fixture.addon_manager.DummyAddOnManager"
]

self.db = SQLA(self.app)
self.appbuilder = AppBuilder(self.app, self.db.session)

def tearDown(self):
self.appbuilder = None
self.app = None
self.db = None

def test_addon_import(self):
self.assertIsInstance(
self.appbuilder.addon_managers[
"flask_appbuilder.tests.A_fixture.addon_manager.DummyAddOnManager"
],
DummyAddOnManager,
)

def test_addon_register_views(self):
client = self.app.test_client()
rv = client.get("/dummy/method1/test1")
self.assertEqual(rv.status_code, 200)
self.assertEqual(rv.data.decode("utf-8"), "test1")
1 change: 0 additions & 1 deletion flask_appbuilder/tests/test_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ def tearDown(self):
self.appbuilder = None
self.app = None
self.db = None
log.debug("TEAR DOWN")

def test_menu_access_denied(self):
"""
Expand Down

0 comments on commit e7692d1

Please sign in to comment.