diff --git a/pyproject.toml b/pyproject.toml index a7a19ff..5a11bc1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,9 +70,6 @@ wuttaweb = "wuttaweb.conf:WuttaWebConfigExtension" [project.entry-points."wutta.typer_imports"] wuttaweb = "wuttaweb.cli" -[project.entry-points."wutta.web.menus"] -wuttaweb = "wuttaweb.menus:MenuHandler" - [project.urls] Homepage = "https://wuttaproject.org/" diff --git a/src/wuttaweb/grids/filters.py b/src/wuttaweb/grids/filters.py index 1250b3d..6be29c7 100644 --- a/src/wuttaweb/grids/filters.py +++ b/src/wuttaweb/grids/filters.py @@ -465,33 +465,6 @@ class StringAlchemyFilter(AlchemyFilter): sa.and_(*criteria))) -class NumericAlchemyFilter(AlchemyFilter): - """ - SQLAlchemy filter option for a numeric data column. - - Subclass of :class:`AlchemyFilter`. - """ - default_verbs = ['equal', 'not_equal', - 'greater_than', 'greater_equal', - 'less_than', 'less_equal'] - - -class IntegerAlchemyFilter(NumericAlchemyFilter): - """ - SQLAlchemy filter option for an integer data column. - - Subclass of :class:`NumericAlchemyFilter`. - """ - - def coerce_value(self, value): - """ """ - if value: - try: - return int(value) - except: - pass - - class BooleanAlchemyFilter(AlchemyFilter): """ SQLAlchemy filter option for a boolean data column. @@ -595,8 +568,6 @@ default_sqlalchemy_filters = { None: AlchemyFilter, sa.String: StringAlchemyFilter, sa.Text: StringAlchemyFilter, - sa.Numeric: NumericAlchemyFilter, - sa.Integer: IntegerAlchemyFilter, sa.Boolean: BooleanAlchemyFilter, sa.Date: DateAlchemyFilter, } diff --git a/src/wuttaweb/handler.py b/src/wuttaweb/handler.py index 9ca6c5a..1ac0b78 100644 --- a/src/wuttaweb/handler.py +++ b/src/wuttaweb/handler.py @@ -24,10 +24,7 @@ Web Handler """ -import warnings - from wuttjamaican.app import GenericHandler -from wuttjamaican.util import load_entry_points from wuttaweb import static, forms, grids @@ -109,87 +106,22 @@ class WebHandler(GenericHandler): def get_menu_handler(self, **kwargs): """ - Get the configured :term:`menu handler` for the web app. + Get the configured "menu" handler for the web app. Specify a custom handler in your config file like this: .. code-block:: ini [wutta.web] - menus.handler.spec = poser.web.menus:PoserMenuHandler + menus.handler_spec = poser.web.menus:PoserMenuHandler :returns: Instance of :class:`~wuttaweb.menus.MenuHandler`. """ - spec = self.config.get(f'{self.appname}.web.menus.handler.spec') - if not spec: - spec = self.config.get(f'{self.appname}.web.menus.handler_spec') - if spec: - warnings.warn(f"setting '{self.appname}.web.menus.handler_spec' is deprecated; " - f"please use '{self.appname}.web.menus.handler_spec' instead", - DeprecationWarning) - else: - spec = self.config.get(f'{self.appname}.web.menus.handler.default_spec', - default='wuttaweb.menus:MenuHandler') - factory = self.app.load_object(spec) - return factory(self.config) - - def get_menu_handler_specs(self, default=None): - """ - Get the :term:`spec` strings for all available :term:`menu - handlers `. See also - :meth:`get_menu_handler()`. - - :param default: Default spec string(s) to include, even if not - registered. Can be a string or list of strings. - - :returns: List of menu handler spec strings. - - This will gather available spec strings from the following: - - First, the ``default`` as provided by caller. - - Second, the default spec from config, if set; for example: - - .. code-block:: ini - - [wutta.web] - menus.handler.default_spec = poser.web.menus:PoserMenuHandler - - Third, each spec registered via entry points. For instance in - ``pyproject.toml``: - - .. code-block:: toml - - [project.entry-points."wutta.web.menus"] - poser = "poser.web.menus:PoserMenuHandler" - - The final list will be "sorted" according to the above, with - the latter registered handlers being sorted alphabetically. - """ - handlers = [] - - # defaults from caller - if isinstance(default, str): - handlers.append(default) - elif default: - handlers.extend(default) - - # configured default, if applicable - default = self.config.get(f'{self.config.appname}.web.menus.handler.default_spec') - if default and default not in handlers: - handlers.append(default) - - # registered via entry points - registered = [] - for Handler in load_entry_points(f'{self.appname}.web.menus').values(): - spec = Handler.get_spec() - if spec not in handlers: - registered.append(spec) - if registered: - registered.sort() - handlers.extend(registered) - - return handlers + if not hasattr(self, 'menu_handler'): + spec = self.config.get(f'{self.appname}.web.menus.handler_spec', + default='wuttaweb.menus:MenuHandler') + self.menu_handler = self.app.load_object(spec)(self.config) + return self.menu_handler def make_form(self, request, **kwargs): """ diff --git a/src/wuttaweb/templates/appinfo/configure.mako b/src/wuttaweb/templates/appinfo/configure.mako index f761ade..03f1551 100644 --- a/src/wuttaweb/templates/appinfo/configure.mako +++ b/src/wuttaweb/templates/appinfo/configure.mako @@ -41,21 +41,6 @@ - - - - - - - -

User/Auth

@@ -256,8 +241,6 @@ ${parent.modify_vue_vars()}