14438 fix delete

This commit is contained in:
Arthur 2024-02-09 07:14:11 -08:00
parent 079dc0077d
commit 8c17d73315
4 changed files with 19 additions and 62 deletions

View File

@ -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

View File

@ -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'),

View File

@ -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(

View File

@ -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'):