From e7a26dccc6d528b9d884e407f87d3894cdaca7d0 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 24 Mar 2023 16:53:32 -0400 Subject: [PATCH] Fix URLs for nested reports & scripts --- netbox/core/models/files.py | 7 +++++++ netbox/extras/models/models.py | 20 +++++--------------- netbox/extras/urls.py | 4 ++-- netbox/templates/extras/report_list.html | 2 +- netbox/templates/extras/script_list.html | 2 +- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/netbox/core/models/files.py b/netbox/core/models/files.py index 3cb9e5ced..a4bbdfeb6 100644 --- a/netbox/core/models/files.py +++ b/netbox/core/models/files.py @@ -56,9 +56,16 @@ class ManagedFile(SyncedDataMixin, models.Model): models.Index(fields=('file_root', 'file_path'), name='core_managedfile_root_path'), ] + def __str__(self): + return self.name + def get_absolute_url(self): return reverse('core:managedfile', args=[self.pk]) + @property + def name(self): + return self.file_path + @property def full_path(self): return os.path.join(self._resolve_root_path(), self.file_path) diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 14bc3e7d3..685614b2f 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -823,9 +823,13 @@ class ConfigRevision(models.Model): class PythonModuleMixin: + @property + def path(self): + return os.path.splitext(self.file_path)[0] + def get_module_info(self): path = os.path.dirname(self.full_path) - module_name = os.path.splitext(os.path.basename(self.file_path))[0] + module_name = os.path.basename(self.path) return ModuleInfo( module_finder=get_importer(path), name=module_name, @@ -861,16 +865,9 @@ class ScriptModule(PythonModuleMixin, ManagedFile): class Meta: proxy = True - def __str__(self): - return self.file_path - def get_absolute_url(self): return reverse('extras:script_list') - @property - def name(self): - return self.file_path - @cached_property def scripts(self): @@ -922,16 +919,9 @@ class ReportModule(PythonModuleMixin, ManagedFile): class Meta: proxy = True - def __str__(self): - return self.file_path - def get_absolute_url(self): return reverse('extras:report_list') - @property - def name(self): - return self.file_path - @cached_property def reports(self): diff --git a/netbox/extras/urls.py b/netbox/extras/urls.py index c56eabeda..f34612068 100644 --- a/netbox/extras/urls.py +++ b/netbox/extras/urls.py @@ -97,14 +97,14 @@ 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/./', views.ReportView.as_view(), name='report'), # 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/./', views.ScriptView.as_view(), name='script'), # Job results path('job-results/', views.JobResultListView.as_view(), name='jobresult_list'), diff --git a/netbox/templates/extras/report_list.html b/netbox/templates/extras/report_list.html index d324fd65e..f2c527013 100644 --- a/netbox/templates/extras/report_list.html +++ b/netbox/templates/extras/report_list.html @@ -53,7 +53,7 @@ {% with last_result=job_results|get_key:report.full_name %} - {{ report.name }} + {{ report.name }} {{ report.description|markdown|placeholder }} {% if last_result %} diff --git a/netbox/templates/extras/script_list.html b/netbox/templates/extras/script_list.html index fb5f5e910..7377d5e8a 100644 --- a/netbox/templates/extras/script_list.html +++ b/netbox/templates/extras/script_list.html @@ -51,7 +51,7 @@ {% with last_result=job_results|get_key:script_class.full_name %} - {{ script_class.name }} + {{ script_class.name }} {{ script_class.Meta.description|markdown|placeholder }}