mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-17 13:08:16 -06:00
14438 fix delete
This commit is contained in:
parent
079dc0077d
commit
8c17d73315
@ -44,9 +44,6 @@ __all__ = (
|
|||||||
'ImageAttachmentSerializer',
|
'ImageAttachmentSerializer',
|
||||||
'JournalEntrySerializer',
|
'JournalEntrySerializer',
|
||||||
'ObjectChangeSerializer',
|
'ObjectChangeSerializer',
|
||||||
'ReportDetailSerializer',
|
|
||||||
'ReportSerializer',
|
|
||||||
'ReportInputSerializer',
|
|
||||||
'SavedFilterSerializer',
|
'SavedFilterSerializer',
|
||||||
'ScriptDetailSerializer',
|
'ScriptDetailSerializer',
|
||||||
'ScriptInputSerializer',
|
'ScriptInputSerializer',
|
||||||
@ -510,66 +507,26 @@ class ConfigTemplateSerializer(TaggableModelSerializer, ValidatedModelSerializer
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Reports
|
|
||||||
#
|
|
||||||
|
|
||||||
class ReportSerializer(serializers.Serializer):
|
|
||||||
url = serializers.HyperlinkedIdentityField(
|
|
||||||
view_name='extras-api:report-detail',
|
|
||||||
lookup_field='full_name',
|
|
||||||
lookup_url_kwarg='pk'
|
|
||||||
)
|
|
||||||
id = serializers.CharField(read_only=True, source="full_name")
|
|
||||||
module = serializers.CharField(max_length=255)
|
|
||||||
name = serializers.CharField(max_length=255)
|
|
||||||
description = serializers.CharField(max_length=255, required=False)
|
|
||||||
test_methods = serializers.ListField(child=serializers.CharField(max_length=255), read_only=True)
|
|
||||||
result = NestedJobSerializer()
|
|
||||||
display = serializers.SerializerMethodField(read_only=True)
|
|
||||||
|
|
||||||
@extend_schema_field(serializers.CharField())
|
|
||||||
def get_display(self, obj):
|
|
||||||
return f'{obj.name} ({obj.module})'
|
|
||||||
|
|
||||||
|
|
||||||
class ReportDetailSerializer(ReportSerializer):
|
|
||||||
result = JobSerializer()
|
|
||||||
|
|
||||||
|
|
||||||
class ReportInputSerializer(serializers.Serializer):
|
|
||||||
schedule_at = serializers.DateTimeField(required=False, allow_null=True)
|
|
||||||
interval = serializers.IntegerField(required=False, allow_null=True)
|
|
||||||
|
|
||||||
def validate_schedule_at(self, value):
|
|
||||||
if value and not self.context['report'].scheduling_enabled:
|
|
||||||
raise serializers.ValidationError("Scheduling is not enabled for this report.")
|
|
||||||
return value
|
|
||||||
|
|
||||||
def validate_interval(self, value):
|
|
||||||
if value and not self.context['report'].scheduling_enabled:
|
|
||||||
raise serializers.ValidationError("Scheduling is not enabled for this report.")
|
|
||||||
return value
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Scripts
|
# Scripts
|
||||||
#
|
#
|
||||||
|
|
||||||
class ScriptSerializer(serializers.Serializer):
|
class ScriptSerializer(ValidatedModelSerializer):
|
||||||
url = serializers.HyperlinkedIdentityField(
|
url = serializers.HyperlinkedIdentityField(view_name='extras-api:script-detail',)
|
||||||
view_name='extras-api:script-detail',
|
# id = serializers.CharField(read_only=True)
|
||||||
lookup_field='full_name',
|
# module = serializers.CharField(max_length=255)
|
||||||
lookup_url_kwarg='pk'
|
# name = serializers.CharField(read_only=True)
|
||||||
)
|
# description = serializers.CharField(read_only=True)
|
||||||
id = serializers.CharField(read_only=True, source="full_name")
|
# vars = serializers.SerializerMethodField(read_only=True)
|
||||||
module = serializers.CharField(max_length=255)
|
# result = NestedJobSerializer()
|
||||||
name = serializers.CharField(read_only=True)
|
|
||||||
description = serializers.CharField(read_only=True)
|
|
||||||
vars = serializers.SerializerMethodField(read_only=True)
|
|
||||||
result = NestedJobSerializer()
|
|
||||||
display = serializers.SerializerMethodField(read_only=True)
|
display = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Script
|
||||||
|
fields = [
|
||||||
|
'id', 'url', 'module', 'name', 'display',
|
||||||
|
]
|
||||||
|
|
||||||
@extend_schema_field(serializers.JSONField(allow_null=True))
|
@extend_schema_field(serializers.JSONField(allow_null=True))
|
||||||
def get_vars(self, instance):
|
def get_vars(self, instance):
|
||||||
return {
|
return {
|
||||||
@ -593,12 +550,12 @@ class ScriptInputSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
def validate_schedule_at(self, value):
|
def validate_schedule_at(self, value):
|
||||||
if value and not self.context['script'].scheduling_enabled:
|
if value and not self.context['script'].scheduling_enabled:
|
||||||
raise serializers.ValidationError("Scheduling is not enabled for this script.")
|
raise serializers.ValidationError(_("Scheduling is not enabled for this script."))
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def validate_interval(self, value):
|
def validate_interval(self, value):
|
||||||
if value and not self.context['script'].scheduling_enabled:
|
if value and not self.context['script'].scheduling_enabled:
|
||||||
raise serializers.ValidationError("Scheduling is not enabled for this script.")
|
raise serializers.ValidationError(_("Scheduling is not enabled for this script."))
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ class Migration(migrations.Migration):
|
|||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
||||||
('name', models.CharField(max_length=79)),
|
('name', models.CharField(max_length=79)),
|
||||||
('module', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, related_name='scripts', to='extras.scriptmodule')),
|
('module', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scripts', to='extras.scriptmodule')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'ordering': ('name', 'pk'),
|
'ordering': ('name', 'pk'),
|
||||||
|
@ -29,7 +29,7 @@ class Script(EventRulesMixin, JobsMixin, models.Model):
|
|||||||
)
|
)
|
||||||
module = models.ForeignKey(
|
module = models.ForeignKey(
|
||||||
to='extras.ScriptModule',
|
to='extras.ScriptModule',
|
||||||
on_delete=models.RESTRICT,
|
on_delete=models.CASCADE,
|
||||||
related_name='scripts'
|
related_name='scripts'
|
||||||
)
|
)
|
||||||
is_valid = models.BooleanField(
|
is_valid = models.BooleanField(
|
||||||
|
@ -1093,7 +1093,7 @@ class ScriptView(BaseScriptView):
|
|||||||
|
|
||||||
form = None
|
form = None
|
||||||
if self.script_class:
|
if self.script_class:
|
||||||
form = script_class.as_form(request.POST, request.FILES)
|
form = self.script_class.as_form(request.POST, request.FILES)
|
||||||
|
|
||||||
# Allow execution only if RQ worker process is running
|
# Allow execution only if RQ worker process is running
|
||||||
if not get_workers_for_queue('default'):
|
if not get_workers_for_queue('default'):
|
||||||
|
Loading…
Reference in New Issue
Block a user