From 1034ee7380647011304bfb53afbd9f27802f4a7e Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 5 Feb 2024 13:41:23 -0800 Subject: [PATCH] 14438 script model --- .../migrations/0107_alter_script_options.py | 35 +++++++++++++++++++ netbox/extras/models/scripts.py | 17 ++++++--- 2 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 netbox/extras/migrations/0107_alter_script_options.py diff --git a/netbox/extras/migrations/0107_alter_script_options.py b/netbox/extras/migrations/0107_alter_script_options.py new file mode 100644 index 000000000..6829761f3 --- /dev/null +++ b/netbox/extras/migrations/0107_alter_script_options.py @@ -0,0 +1,35 @@ +# Generated by Django 4.2.9 on 2024-02-05 21:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0106_bookmark_user_cascade_deletion'), + ] + + operations = [ + migrations.AddField( + model_name='script', + name='name', + field=models.CharField(default=None, max_length=79), + preserve_default=False, + ), + migrations.AddField( + model_name='script', + name='script_module', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, related_name='scripts', to='extras.scriptmodule'), + preserve_default=False, + ), + migrations.AlterField( + model_name='script', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterModelOptions( + name='script', + options={'ordering': ('name', 'pk')}, + ), + ] diff --git a/netbox/extras/models/scripts.py b/netbox/extras/models/scripts.py index 93275acda..2f1454e2a 100644 --- a/netbox/extras/models/scripts.py +++ b/netbox/extras/models/scripts.py @@ -22,11 +22,18 @@ logger = logging.getLogger('netbox.data_backends') class Script(EventRulesMixin, models.Model): - """ - Dummy model used to generate permissions for custom scripts. Does not exist in the database. - """ + name = models.CharField( + verbose_name=_('name'), + max_length=79, + ) + script_module = models.ForeignKey( + to='extras.ScriptModule', + on_delete=models.PROTECT, + related_name='scripts' + ) + class Meta: - managed = False + ordering = ('name', 'pk') class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)): @@ -52,6 +59,7 @@ class ScriptModule(PythonModuleMixin, JobsMixin, ManagedFile): def __str__(self): return self.python_name + ''' @cached_property def scripts(self): @@ -75,6 +83,7 @@ class ScriptModule(PythonModuleMixin, JobsMixin, ManagedFile): scripts[_get_name(cls)] = cls return scripts + ''' def save(self, *args, **kwargs): self.file_root = ManagedFileRootPathChoices.SCRIPTS