Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion netbox/core/models/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ def _resolve_root_path(self):

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):
Expand Down
5 changes: 5 additions & 0 deletions netbox/extras/models/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
12 changes: 6 additions & 6 deletions netbox/extras/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,18 +98,18 @@
path('reports/add/', views.ReportModuleCreateView.as_view(), name='reportmodule_add'),
path('reports/results/<int:job_pk>/', views.ReportResultView.as_view(), name='report_result'),
path('reports/<int:pk>/', include(get_model_urls('extras', 'reportmodule'))),
path('reports/<str:module>/<str:name>/', views.ReportView.as_view(), name='report'),
path('reports/<str:module>/<str:name>/source/', views.ReportSourceView.as_view(), name='report_source'),
path('reports/<str:module>/<str:name>/jobs/', views.ReportJobsView.as_view(), name='report_jobs'),
path('reports/<path:module>/<str:name>/', views.ReportView.as_view(), name='report'),
path('reports/<path:module>/<str:name>/source/', views.ReportSourceView.as_view(), name='report_source'),
path('reports/<path:module>/<str:name>/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/<int:job_pk>/', views.ScriptResultView.as_view(), name='script_result'),
path('scripts/<int:pk>/', include(get_model_urls('extras', 'scriptmodule'))),
path('scripts/<str:module>/<str:name>/', views.ScriptView.as_view(), name='script'),
path('scripts/<str:module>/<str:name>/source/', views.ScriptSourceView.as_view(), name='script_source'),
path('scripts/<str:module>/<str:name>/jobs/', views.ScriptJobsView.as_view(), name='script_jobs'),
path('scripts/<path:module>/<str:name>/', views.ScriptView.as_view(), name='script'),
path('scripts/<path:module>/<str:name>/source/', views.ScriptSourceView.as_view(), name='script_source'),
path('scripts/<path:module>/<str:name>/jobs/', views.ScriptJobsView.as_view(), name='script_jobs'),

# Markdown
path('render/markdown/', views.RenderMarkdownView.as_view(), name="render_markdown")
Expand Down
2 changes: 1 addition & 1 deletion netbox/templates/extras/report_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ <h5 class="card-header" id="module{{ module.pk }}">
{% with last_job=jobs|get_key:report.name %}
<tr>
<td>
<a href="{% url 'extras:report' module=module.python_name name=report.class_name %}" id="{{ report.module }}.{{ report.class_name }}">{{ report.name }}</a>
<a href="{% url 'extras:report' module=module.url_path name=report.class_name %}" id="{{ report.module }}.{{ report.class_name }}">{{ report.name }}</a>
</td>
<td>{{ report.description|markdown|placeholder }}</td>
{% if last_job %}
Expand Down
2 changes: 1 addition & 1 deletion netbox/templates/extras/script_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ <h5 class="card-header" id="module{{ module.pk }}">
{% for script_name, script_class in module.scripts.items %}
<tr>
<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.url_path name=script_name %}" name="script.{{ script_name }}">{{ script_class.name }}</a>
</td>
<td>
{{ script_class.Meta.description|markdown|placeholder }}
Expand Down