Coverage for netbox/registry.py: 69%

13 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1import collections 

2 

3from django.utils.translation import gettext as _ 

4 

5 

6class Registry(dict): 

7 """ 

8 Central registry for registration of functionality. Once a Registry is initialized, keys cannot be added or 

9 removed (though the value of each key is mutable). 

10 """ 

11 def __getitem__(self, key): 

12 try: 

13 return super().__getitem__(key) 

14 except KeyError: 

15 raise KeyError(_("Invalid store: {key}").format(key=key)) 

16 

17 def __setitem__(self, key, value): 

18 raise TypeError(_("Cannot add stores to registry after initialization")) 

19 

20 def __delitem__(self, key): 

21 raise TypeError(_("Cannot delete stores from registry")) 

22 

23 

24# Initialize the global registry 

25registry = Registry({ 

26 'counter_fields': collections.defaultdict(dict), 

27 'data_backends': dict(), 

28 'event_rule_actions': dict(), 

29 'event_types': dict(), 

30 'filtersets': dict(), 

31 'model_actions': collections.defaultdict(set), 

32 'model_features': dict(), 

33 'plugins': dict(), 

34 'request_processors': list(), 

35 'search': dict(), 

36 'serializer_resolvers': dict(), 

37 'system_jobs': dict(), 

38 'tables': collections.defaultdict(dict), 

39 'views': collections.defaultdict(dict), 

40 'webhook_callbacks': list(), 

41 'widgets': dict(), 

42})