1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

31 lines
857 B
Python
Raw Normal View History

2022-01-19 15:22:28 -05:00
import collections
from extras.constants import EXTRAS_FEATURES
class Registry(dict):
"""
Central registry for registration of functionality. Once a store (key) is defined, it cannot be overwritten or
deleted (although its value may be manipulated).
"""
def __getitem__(self, key):
try:
return super().__getitem__(key)
except KeyError:
2022-01-19 15:22:28 -05:00
raise KeyError(f"Invalid store: {key}")
def __setitem__(self, key, value):
if key in self:
2022-01-19 15:22:28 -05:00
raise KeyError(f"Store already set: {key}")
super().__setitem__(key, value)
def __delitem__(self, key):
2020-03-18 13:15:22 -04:00
raise TypeError("Cannot delete stores from registry")
2022-01-19 15:22:28 -05:00
# Initialize the global registry
registry = Registry()
2022-01-19 15:22:28 -05:00
registry['model_features'] = {
feature: collections.defaultdict(set) for feature in EXTRAS_FEATURES
}