diff --git a/netbox/core/models/files.py b/netbox/core/models/files.py index a725ea0ac..6d41fca61 100644 --- a/netbox/core/models/files.py +++ b/netbox/core/models/files.py @@ -75,7 +75,9 @@ class ManagedFile(SyncedDataMixin, models.Model): def sync_data(self): if self.data_file: - self.file_path = os.path.basename(self.data_path) + self.file_path = self.data_path + path, _ = os.path.split(self.full_path) + os.makedirs(path, exist_ok=True) self.data_file.write_to_disk(self.full_path, overwrite=True) def delete(self, *args, **kwargs): diff --git a/netbox/extras/models/mixins.py b/netbox/extras/models/mixins.py index cb1d31837..f4af16545 100644 --- a/netbox/extras/models/mixins.py +++ b/netbox/extras/models/mixins.py @@ -12,6 +12,11 @@ class PythonModuleMixin: def path(self): return os.path.splitext(self.file_path)[0] + @property + def url_path(self): + path, _ = os.path.split(self.data_path) + return f"{path}/{self.python_name}" + @property def python_name(self): path, filename = os.path.split(self.full_path) diff --git a/netbox/extras/urls.py b/netbox/extras/urls.py index f04c53add..7deaeb8da 100644 --- a/netbox/extras/urls.py +++ b/netbox/extras/urls.py @@ -98,18 +98,18 @@ urlpatterns = [ path('reports/add/', views.ReportModuleCreateView.as_view(), name='reportmodule_add'), path('reports/results//', views.ReportResultView.as_view(), name='report_result'), path('reports//', include(get_model_urls('extras', 'reportmodule'))), - path('reports///', views.ReportView.as_view(), name='report'), - path('reports///source/', views.ReportSourceView.as_view(), name='report_source'), - path('reports///jobs/', views.ReportJobsView.as_view(), name='report_jobs'), + path('reports///', views.ReportView.as_view(), name='report'), + path('reports///source/', views.ReportSourceView.as_view(), name='report_source'), + path('reports///jobs/', views.ReportJobsView.as_view(), name='report_jobs'), # Scripts path('scripts/', views.ScriptListView.as_view(), name='script_list'), path('scripts/add/', views.ScriptModuleCreateView.as_view(), name='scriptmodule_add'), path('scripts/results//', views.ScriptResultView.as_view(), name='script_result'), path('scripts//', include(get_model_urls('extras', 'scriptmodule'))), - path('scripts///', views.ScriptView.as_view(), name='script'), - path('scripts///source/', views.ScriptSourceView.as_view(), name='script_source'), - path('scripts///jobs/', views.ScriptJobsView.as_view(), name='script_jobs'), + path('scripts///', views.ScriptView.as_view(), name='script'), + path('scripts///source/', views.ScriptSourceView.as_view(), name='script_source'), + path('scripts///jobs/', views.ScriptJobsView.as_view(), name='script_jobs'), # Markdown path('render/markdown/', views.RenderMarkdownView.as_view(), name="render_markdown") diff --git a/netbox/templates/extras/report_list.html b/netbox/templates/extras/report_list.html index 0c27eefda..bff59ed71 100644 --- a/netbox/templates/extras/report_list.html +++ b/netbox/templates/extras/report_list.html @@ -54,7 +54,7 @@ {% with last_job=jobs|get_key:report.name %} - {{ report.name }} + {{ report.name }} {{ report.description|markdown|placeholder }} {% if last_job %} diff --git a/netbox/templates/extras/script_list.html b/netbox/templates/extras/script_list.html index bccbce589..e3c4a0de0 100644 --- a/netbox/templates/extras/script_list.html +++ b/netbox/templates/extras/script_list.html @@ -51,7 +51,7 @@ {% for script_name, script_class in module.scripts.items %} - {{ script_class.name }} + {{ script_class.name }} {{ script_class.Meta.description|markdown|placeholder }}