apps.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django.apps import AppConfig
  2. from netbox import denormalized
  3. class DCIMConfig(AppConfig):
  4. name = "dcim"
  5. verbose_name = "DCIM"
  6. def ready(self):
  7. from django.utils.translation import gettext as _
  8. from netbox.models.features import register_models
  9. from utilities.counters import connect_counters
  10. from utilities.permissions import ModelAction, register_model_actions
  11. from . import search, signals # noqa: F401
  12. from .models import CableTermination, Device, DeviceType, ModuleType, RackType, VirtualChassis
  13. # Register models
  14. register_models(*self.get_models())
  15. # Register custom permission actions
  16. register_model_actions(Device, [
  17. ModelAction('render_config', help_text=_('Render device configuration')),
  18. ])
  19. # Register denormalized fields
  20. denormalized.register(CableTermination, '_device', {
  21. '_rack': 'rack',
  22. '_location': 'location',
  23. '_site': 'site',
  24. })
  25. denormalized.register(CableTermination, '_rack', {
  26. '_location': 'location',
  27. '_site': 'site',
  28. })
  29. denormalized.register(CableTermination, '_location', {
  30. '_site': 'site',
  31. })
  32. # Register counters
  33. connect_counters(Device, DeviceType, ModuleType, RackType, VirtualChassis)