apps.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from django.apps import AppConfig
  2. from django.conf import settings
  3. from django.core.cache import cache
  4. from django.db import models
  5. from django.db.migrations.operations import AlterModelOptions
  6. from django.utils.translation import gettext as _
  7. from core.events import *
  8. from netbox.events import EventType, EVENT_TYPE_KIND_DANGER, EVENT_TYPE_KIND_SUCCESS, EVENT_TYPE_KIND_WARNING
  9. from utilities.migration import custom_deconstruct
  10. # Ignore verbose_name & verbose_name_plural Meta options when calculating model migrations
  11. AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name')
  12. AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name_plural')
  13. # Use our custom destructor to ignore certain attributes when calculating field migrations
  14. models.Field.deconstruct = custom_deconstruct
  15. class CoreConfig(AppConfig):
  16. name = "core"
  17. def ready(self):
  18. from core.api import schema # noqa: F401
  19. from core.checks import check_duplicate_indexes # noqa: F401
  20. from netbox.models.features import register_models
  21. from . import data_backends, events, search # noqa: F401
  22. from netbox import context_managers # noqa: F401
  23. # Register models
  24. register_models(*self.get_models())
  25. # Register core events
  26. EventType(OBJECT_CREATED, _('Object created')).register()
  27. EventType(OBJECT_UPDATED, _('Object updated')).register()
  28. EventType(OBJECT_DELETED, _('Object deleted'), destructive=True).register()
  29. EventType(JOB_STARTED, _('Job started')).register()
  30. EventType(JOB_COMPLETED, _('Job completed'), kind=EVENT_TYPE_KIND_SUCCESS).register()
  31. EventType(JOB_FAILED, _('Job failed'), kind=EVENT_TYPE_KIND_WARNING).register()
  32. EventType(JOB_ERRORED, _('Job errored'), kind=EVENT_TYPE_KIND_DANGER).register()
  33. # Clear Redis cache on startup in development mode
  34. if settings.DEBUG:
  35. try:
  36. cache.clear()
  37. except Exception:
  38. pass