Skip to content

Commit 383d670

Browse files
committed
cleanup
1 parent df8a40d commit 383d670

File tree

2 files changed

+3
-87
lines changed

2 files changed

+3
-87
lines changed

netbox_custom_objects/api/serializers.py

Lines changed: 3 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ def get_url(self, obj):
230230
"pk": lookup_value,
231231
"custom_object_type": obj.custom_object_type.name.lower(),
232232
}
233-
request = self.context.get("request")
234-
if not request:
235-
return None
233+
request = self.context["request"]
236234
format = self.context.get("format")
237235
return reverse(view_name, kwargs=kwargs, request=request, format=format)
238236

@@ -250,83 +248,12 @@ def get_display(self, obj):
250248
"get_display": get_display,
251249
}
252250

253-
# Add custom fields using the proper field types
254251
for field in model_fields:
252+
field_type = field_types.FIELD_TYPE_CLASS[field.type]()
255253
try:
256-
field_type = field_types.FIELD_TYPE_CLASS[field.type]()
257-
serializer_field = field_type.get_serializer_field(field)
258-
259-
# Handle hyperlinked fields that might cause issues
260-
if hasattr(serializer_field, 'view_name'):
261-
# Check if the view_name is empty or problematic
262-
if not getattr(serializer_field, 'view_name', None):
263-
# Replace with a safer field type
264-
if field.type in ['object', 'multiobject']:
265-
# Use PrimaryKeyRelatedField for object fields
266-
if hasattr(field, 'related_object_type') and field.related_object_type:
267-
try:
268-
model_class = field.related_object_type.model_class()
269-
if field.type == 'multiobject':
270-
attrs[field.name] = serializers.PrimaryKeyRelatedField(
271-
queryset=model_class.objects.all(),
272-
many=True,
273-
allow_null=True,
274-
required=not field.required
275-
)
276-
else:
277-
attrs[field.name] = serializers.PrimaryKeyRelatedField(
278-
queryset=model_class.objects.all(),
279-
allow_null=True,
280-
required=not field.required
281-
)
282-
except Exception:
283-
# Fallback to read-only PK field
284-
attrs[field.name] = serializers.PrimaryKeyRelatedField(read_only=True)
285-
else:
286-
attrs[field.name] = serializers.PrimaryKeyRelatedField(read_only=True)
287-
else:
288-
attrs[field.name] = serializer_field
289-
else:
290-
attrs[field.name] = serializer_field
291-
else:
292-
attrs[field.name] = serializer_field
293-
254+
attrs[field.name] = field_type.get_serializer_field(field)
294255
except NotImplementedError:
295256
print(f"serializer: {field.name} field is not implemented; using a default serializer field")
296-
# Create a basic field based on type
297-
if field.type in ['text', 'longtext', 'url']:
298-
attrs[field.name] = serializers.CharField(
299-
required=field.required,
300-
allow_blank=not field.required,
301-
max_length=255 if field.type == 'text' else None
302-
)
303-
elif field.type == 'integer':
304-
attrs[field.name] = serializers.IntegerField(required=field.required)
305-
elif field.type == 'decimal':
306-
attrs[field.name] = serializers.DecimalField(
307-
required=field.required,
308-
max_digits=10,
309-
decimal_places=2
310-
)
311-
elif field.type == 'boolean':
312-
attrs[field.name] = serializers.BooleanField(required=field.required)
313-
elif field.type == 'date':
314-
attrs[field.name] = serializers.DateField(required=field.required)
315-
elif field.type == 'datetime':
316-
attrs[field.name] = serializers.DateTimeField(required=field.required)
317-
else:
318-
attrs[field.name] = serializers.CharField(
319-
required=field.required,
320-
allow_blank=not field.required
321-
)
322-
except Exception as e:
323-
print(f"serializer: Error creating field {field.name}: {e}")
324-
# Safe fallback
325-
attrs[field.name] = serializers.CharField(
326-
required=False,
327-
allow_blank=True,
328-
read_only=True
329-
)
330257

331258
serializer_name = f"{model._meta.object_name}Serializer"
332259
serializer = type(
@@ -339,11 +266,4 @@ def get_display(self, obj):
339266
current_module = sys.modules[__name__]
340267
setattr(current_module, serializer_name, serializer)
341268

342-
'''
343-
# Also add to __all__ so it's properly exported
344-
global __all__
345-
if serializer_name not in __all__:
346-
__all__ = __all__ + (serializer_name,)
347-
'''
348-
349269
return serializer

netbox_custom_objects/models.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -485,10 +485,6 @@ def create_model(self):
485485
ct.features = features
486486
ct.save()
487487

488-
# Register the serializer for this model so NetBox's event system can find it
489-
from netbox_custom_objects.api.serializers import get_serializer_class
490-
get_serializer_class(model)
491-
492488
with connection.schema_editor() as schema_editor:
493489
schema_editor.create_model(model)
494490

0 commit comments

Comments
 (0)