14438 script model

This commit is contained in:
Arthur 2024-02-05 13:41:23 -08:00
parent f63d23872f
commit 1034ee7380
2 changed files with 48 additions and 4 deletions

View File

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

View File

@ -22,11 +22,18 @@ logger = logging.getLogger('netbox.data_backends')
class Script(EventRulesMixin, models.Model): class Script(EventRulesMixin, models.Model):
""" name = models.CharField(
Dummy model used to generate permissions for custom scripts. Does not exist in the database. verbose_name=_('name'),
""" max_length=79,
)
script_module = models.ForeignKey(
to='extras.ScriptModule',
on_delete=models.PROTECT,
related_name='scripts'
)
class Meta: class Meta:
managed = False ordering = ('name', 'pk')
class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)): class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)):
@ -52,6 +59,7 @@ class ScriptModule(PythonModuleMixin, JobsMixin, ManagedFile):
def __str__(self): def __str__(self):
return self.python_name return self.python_name
'''
@cached_property @cached_property
def scripts(self): def scripts(self):
@ -75,6 +83,7 @@ class ScriptModule(PythonModuleMixin, JobsMixin, ManagedFile):
scripts[_get_name(cls)] = cls scripts[_get_name(cls)] = cls
return scripts return scripts
'''
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
self.file_root = ManagedFileRootPathChoices.SCRIPTS self.file_root = ManagedFileRootPathChoices.SCRIPTS