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

1"""Plugin mixin classes for icon pack plugin.""" 

2 

3import structlog 

4 

5from common.icons import IconPack, reload_icon_packs 

6from plugin import PluginMixinEnum 

7from plugin.helpers import MixinNotImplementedError 

8 

9logger = structlog.get_logger('inventree') 

10 

11 

12class IconPackMixin: 

13 """Mixin that add custom icon packs.""" 

14 

15 class MixinMeta: 

16 """Meta options for this mixin.""" 

17 

18 MIXIN_NAME = 'icon_pack' 

19 

20 def __init__(self): 

21 """Register mixin.""" 

22 super().__init__() 

23 self.add_mixin(PluginMixinEnum.ICON_PACK, True, __class__) 

24 

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() 

30 

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 )