Skip to content

Commit fec2afd

Browse files
committed
init changes
1 parent 81b03b8 commit fec2afd

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

netbox_custom_objects/__init__.py

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,49 @@ class CustomObjectsPluginConfig(PluginConfig):
5252
required_settings = []
5353
template_extensions = "template_content.template_extensions"
5454

55+
def ready(self):
56+
from .models import CustomObjectType
57+
from netbox_custom_objects.api.serializers import get_serializer_class
58+
59+
# Suppress warnings about database calls during app initialization
60+
with warnings.catch_warnings():
61+
warnings.filterwarnings(
62+
"ignore", category=RuntimeWarning, message=".*database.*"
63+
)
64+
warnings.filterwarnings(
65+
"ignore", category=UserWarning, message=".*database.*"
66+
)
67+
68+
# Skip database calls if running during migration or if table doesn't exist
69+
if is_running_migration() or not check_custom_object_type_table_exists():
70+
super().ready()
71+
return
72+
73+
qs = CustomObjectType.objects.all()
74+
for obj in qs:
75+
model = obj.get_model()
76+
get_serializer_class(model)
77+
78+
super().ready()
79+
5580
def get_model(self, model_name, require_ready=True):
56-
try:
57-
# if the model is already loaded, return it
58-
return super().get_model(model_name, require_ready)
59-
except LookupError:
60-
try:
61-
self.apps.check_apps_ready()
62-
except AppRegistryNotReady:
63-
raise
81+
if "table" in model_name.lower() and "model" in model_name.lower():
82+
is_custom_object_model = True
83+
else:
84+
is_custom_object_model = False
6485

86+
self.apps.check_apps_ready()
87+
if not is_custom_object_model:
88+
try:
89+
# if the model is already loaded, return it
90+
return super().get_model(model_name, require_ready)
91+
except LookupError:
92+
try:
93+
self.apps.check_apps_ready()
94+
except AppRegistryNotReady:
95+
raise
96+
97+
model_name = model_name.lower()
6598
# only do database calls if we are sure the app is ready to avoid
6699
# Django warnings
67100
if "table" not in model_name.lower() or "model" not in model_name.lower():

0 commit comments

Comments
 (0)