Replicate origin hierarchy when creating managed files

This commit is contained in:
jeremystretch 2023-05-02 10:50:24 -04:00
parent a566a56a64
commit 93b432baa5
5 changed files with 16 additions and 9 deletions

View File

@ -75,7 +75,9 @@ class ManagedFile(SyncedDataMixin, models.Model):
def sync_data(self): def sync_data(self):
if self.data_file: 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) self.data_file.write_to_disk(self.full_path, overwrite=True)
def delete(self, *args, **kwargs): def delete(self, *args, **kwargs):

View File

@ -12,6 +12,11 @@ class PythonModuleMixin:
def path(self): def path(self):
return os.path.splitext(self.file_path)[0] 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 @property
def python_name(self): def python_name(self):
path, filename = os.path.split(self.full_path) path, filename = os.path.split(self.full_path)

View File

@ -98,18 +98,18 @@ urlpatterns = [
path('reports/add/', views.ReportModuleCreateView.as_view(), name='reportmodule_add'), 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/results/<int:job_pk>/', views.ReportResultView.as_view(), name='report_result'),
path('reports/<int:pk>/', include(get_model_urls('extras', 'reportmodule'))), path('reports/<int:pk>/', include(get_model_urls('extras', 'reportmodule'))),
path('reports/<str:module>/<str:name>/', views.ReportView.as_view(), name='report'), path('reports/<path: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/<path: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>/jobs/', views.ReportJobsView.as_view(), name='report_jobs'),
# Scripts # Scripts
path('scripts/', views.ScriptListView.as_view(), name='script_list'), path('scripts/', views.ScriptListView.as_view(), name='script_list'),
path('scripts/add/', views.ScriptModuleCreateView.as_view(), name='scriptmodule_add'), 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/results/<int:job_pk>/', views.ScriptResultView.as_view(), name='script_result'),
path('scripts/<int:pk>/', include(get_model_urls('extras', 'scriptmodule'))), path('scripts/<int:pk>/', include(get_model_urls('extras', 'scriptmodule'))),
path('scripts/<str:module>/<str:name>/', views.ScriptView.as_view(), name='script'), path('scripts/<path: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/<path: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>/jobs/', views.ScriptJobsView.as_view(), name='script_jobs'),
# Markdown # Markdown
path('render/markdown/', views.RenderMarkdownView.as_view(), name="render_markdown") path('render/markdown/', views.RenderMarkdownView.as_view(), name="render_markdown")

View File

@ -54,7 +54,7 @@
{% with last_job=jobs|get_key:report.name %} {% with last_job=jobs|get_key:report.name %}
<tr> <tr>
<td> <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>
<td>{{ report.description|markdown|placeholder }}</td> <td>{{ report.description|markdown|placeholder }}</td>
{% if last_job %} {% if last_job %}

View File

@ -51,7 +51,7 @@
{% for script_name, script_class in module.scripts.items %} {% for script_name, script_class in module.scripts.items %}
<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.url_path name=script_name %}" name="script.{{ script_name }}">{{ script_class.name }}</a>
</td> </td>
<td> <td>
{{ script_class.Meta.description|markdown|placeholder }} {{ script_class.Meta.description|markdown|placeholder }}