mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-18 05:28:16 -06:00
14438 script model
This commit is contained in:
parent
4cb3b63f79
commit
fc890e36af
@ -5,14 +5,15 @@ import django.db.models.deletion
|
|||||||
|
|
||||||
|
|
||||||
def update_scripts(apps, schema_editor):
|
def update_scripts(apps, schema_editor):
|
||||||
ScriptModule = apps.get_model('extras', 'ScriptModule')
|
from extras.models import ScriptModule
|
||||||
|
ScriptModuleNew = apps.get_model('extras', 'ScriptModule')
|
||||||
Script = apps.get_model('extras', 'Script')
|
Script = apps.get_model('extras', 'Script')
|
||||||
|
|
||||||
for module in ScriptModule.objects.all():
|
for module in ScriptModule.objects.all():
|
||||||
for script, cls in module.get_module_scripts:
|
for script in module.get_module_scripts.keys():
|
||||||
Script.objects.create(
|
Script.objects.create(
|
||||||
name=script,
|
name=script,
|
||||||
script_module=module,
|
module=ScriptModuleNew.objects.get(file_root=module.file_root, file_path=module.file_path),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -23,26 +24,16 @@ class Migration(migrations.Migration):
|
|||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.AddField(
|
migrations.CreateModel(
|
||||||
model_name='script',
|
name='Script',
|
||||||
name='name',
|
fields=[
|
||||||
field=models.CharField(default=None, max_length=79),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
||||||
preserve_default=False,
|
('name', models.CharField(max_length=79)),
|
||||||
),
|
('module', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='scripts', to='extras.scriptmodule')),
|
||||||
migrations.AddField(
|
],
|
||||||
model_name='script',
|
options={
|
||||||
name='module',
|
'ordering': ('name', 'pk'),
|
||||||
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')},
|
|
||||||
),
|
),
|
||||||
migrations.RunPython(
|
migrations.RunPython(
|
||||||
code=update_scripts,
|
code=update_scripts,
|
||||||
|
@ -32,9 +32,16 @@ class Script(EventRulesMixin, models.Model):
|
|||||||
related_name='scripts'
|
related_name='scripts'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('name', 'pk')
|
ordering = ('name', 'pk')
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def python_class(self):
|
||||||
|
return self.module.get_module_scripts.get(self.name)
|
||||||
|
|
||||||
|
|
||||||
class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)):
|
class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)):
|
||||||
|
|
||||||
|
@ -53,15 +53,15 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% with jobs=module.get_latest_jobs %}
|
{% with jobs=module.get_latest_jobs %}
|
||||||
{% for script_name, script_class in module.scripts.items %}
|
{% for script in module.scripts.all %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url 'extras:script' module=module.python_name name=script_name %}" name="script.{{ script_name }}">{{ script_class.name }}</a>
|
<a href="{% url 'extras:script' module=module.python_name name=script.name %}" name="script.{{ script.name }}">{{ script.python_class.name }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ script_class.Meta.description|markdown|placeholder }}
|
{{ script.python_class.Meta.description|markdown|placeholder }}
|
||||||
</td>
|
</td>
|
||||||
{% with last_result=jobs|get_key:script_class.class_name %}
|
{% with last_result=jobs|get_key:script.python_class.class_name %}
|
||||||
{% if last_result %}
|
{% if last_result %}
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url 'extras:script_result' job_pk=last_result.pk %}">{{ last_result.created|annotated_date }}</a>
|
<a href="{% url 'extras:script_result' job_pk=last_result.pk %}">{{ last_result.created|annotated_date }}</a>
|
||||||
|
Loading…
Reference in New Issue
Block a user