mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-18 13:38:16 -06:00
14132 nested serializer
This commit is contained in:
parent
1085458e66
commit
a16d722fcb
@ -25,7 +25,7 @@ class NestedEventRuleSerializer(WritableNestedSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.EventRule
|
model = models.EventRule
|
||||||
fields = ['id', 'display', 'name']
|
fields = ['id', 'url', 'display', 'name']
|
||||||
|
|
||||||
|
|
||||||
class NestedWebhookSerializer(WritableNestedSerializer):
|
class NestedWebhookSerializer(WritableNestedSerializer):
|
||||||
@ -117,10 +117,18 @@ class NestedJournalEntrySerializer(WritableNestedSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class NestedScriptModuleSerializer(WritableNestedSerializer):
|
class NestedScriptModuleSerializer(WritableNestedSerializer):
|
||||||
|
# url = serializers.SerializerMethodField()
|
||||||
|
url = serializers.HyperlinkedIdentityField(
|
||||||
|
view_name='extras-api:script-detail',
|
||||||
|
lookup_field='full_name',
|
||||||
|
lookup_url_kwarg='pk'
|
||||||
|
)
|
||||||
|
name = serializers.CharField(read_only=True)
|
||||||
|
display = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ScriptModule
|
model = models.ScriptModule
|
||||||
fields = ['id', 'name', 'created']
|
fields = ['id', 'url', 'display', 'name']
|
||||||
|
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
return f'{obj.name} ({obj.module})'
|
return f'{obj.name} ({obj.module})'
|
||||||
|
@ -83,12 +83,18 @@ class EventRuleSerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
@extend_schema_field(OpenApiTypes.OBJECT)
|
@extend_schema_field(OpenApiTypes.OBJECT)
|
||||||
def get_action_object(self, instance):
|
def get_action_object(self, instance):
|
||||||
serializer = get_serializer_for_model(
|
|
||||||
model=instance.action_object_type.model_class(),
|
|
||||||
prefix=NESTED_SERIALIZER_PREFIX
|
|
||||||
)
|
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(instance.action_object, context=context).data
|
if instance.action_type == EventRuleActionChoices.WEBHOOK:
|
||||||
|
serializer = get_serializer_for_model(
|
||||||
|
model=instance.action_object_type.model_class(),
|
||||||
|
prefix=NESTED_SERIALIZER_PREFIX
|
||||||
|
)
|
||||||
|
return serializer(instance.action_object, context=context).data
|
||||||
|
elif instance.action_type == EventRuleActionChoices.SCRIPT:
|
||||||
|
from extras.api.nested_serializers import NestedScriptModuleSerializer
|
||||||
|
module_id, script_name = instance.action_parameters['script_choice'].split(":", maxsplit=1)
|
||||||
|
script = instance.action_object.scripts[script_name]()
|
||||||
|
return NestedScriptModuleSerializer(script, context=context).data
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -336,7 +336,11 @@ class EventRuleForm(NetBoxModelForm):
|
|||||||
self.cleaned_data['action_object_type'] = ContentType.objects.get_for_model(script_module, for_concrete_model=False)
|
self.cleaned_data['action_object_type'] = ContentType.objects.get_for_model(script_module, for_concrete_model=False)
|
||||||
self.cleaned_data['action_object_id'] = script_module.id
|
self.cleaned_data['action_object_id'] = script_module.id
|
||||||
script = script_module.scripts[script_name]()
|
script = script_module.scripts[script_name]()
|
||||||
self.cleaned_data['action_parameters'] = {'script_choice': action_choice, 'script_full_name': script.full_name}
|
self.cleaned_data['action_parameters'] = {
|
||||||
|
'script_choice': action_choice,
|
||||||
|
'script_name': script.name,
|
||||||
|
'script_full_name': script.full_name,
|
||||||
|
}
|
||||||
|
|
||||||
return self.cleaned_data
|
return self.cleaned_data
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user