Coverage for src/backend/InvenTree/plugin/base/icons/mixins.py: 71%
17 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
1"""Plugin mixin classes for icon pack plugin."""
3import structlog
5from common.icons import IconPack, reload_icon_packs
6from plugin import PluginMixinEnum
7from plugin.helpers import MixinNotImplementedError
9logger = structlog.get_logger('inventree')
12class IconPackMixin:
13 """Mixin that add custom icon packs."""
15 class MixinMeta:
16 """Meta options for this mixin."""
18 MIXIN_NAME = 'icon_pack'
20 def __init__(self):
21 """Register mixin."""
22 super().__init__()
23 self.add_mixin(PluginMixinEnum.ICON_PACK, True, __class__)
25 @classmethod
26 def _activate_mixin(cls, registry, plugins, *args, **kwargs):
27 """Activate icon pack plugins."""
28 logger.debug('Reloading icon packs')
29 reload_icon_packs()
31 def icon_packs(self) -> list[IconPack]:
32 """Return a list of custom icon packs."""
33 raise MixinNotImplementedError(
34 f"{__class__} is missing the 'icon_packs' method"
35 )