mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 17:26:10 -06:00
Fix file uploads
This commit is contained in:
parent
090a28131e
commit
c20eeb8114
@ -98,3 +98,12 @@ class ManagedFileForm(SyncedDataMixin, NetBoxModelForm):
|
|||||||
raise forms.ValidationError("Cannot upload a file and sync from an existing file")
|
raise forms.ValidationError("Cannot upload a file and sync from an existing file")
|
||||||
|
|
||||||
return self.cleaned_data
|
return self.cleaned_data
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
# If a file was uploaded, save it to disk
|
||||||
|
if self.cleaned_data['upload_file']:
|
||||||
|
self.instance.file_path = self.cleaned_data['upload_file'].name
|
||||||
|
with open(self.instance.full_path, 'wb+') as new_file:
|
||||||
|
new_file.write(self.cleaned_data['upload_file'].read())
|
||||||
|
|
||||||
|
return super().save(*args, **kwargs)
|
||||||
|
@ -74,11 +74,14 @@ class ManagedFile(SyncedDataMixin, models.Model):
|
|||||||
|
|
||||||
def sync_data(self):
|
def sync_data(self):
|
||||||
if self.data_file:
|
if self.data_file:
|
||||||
self.file_path = self.data_path
|
self.file_path = os.path.basename(self.data_path)
|
||||||
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):
|
||||||
# Delete file from disk
|
# Delete file from disk
|
||||||
|
try:
|
||||||
os.remove(self.full_path)
|
os.remove(self.full_path)
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
return super().delete(*args, **kwargs)
|
return super().delete(*args, **kwargs)
|
||||||
|
@ -850,7 +850,7 @@ class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)):
|
|||||||
return super().get_queryset().filter(file_root='scripts')
|
return super().get_queryset().filter(file_root='scripts')
|
||||||
|
|
||||||
|
|
||||||
class ScriptModule(JobResultsMixin, WebhooksMixin, PythonModuleMixin, ManagedFile):
|
class ScriptModule(PythonModuleMixin, ManagedFile):
|
||||||
"""
|
"""
|
||||||
Proxy model for script module files.
|
Proxy model for script module files.
|
||||||
"""
|
"""
|
||||||
@ -901,7 +901,7 @@ class ReportModuleManager(models.Manager.from_queryset(RestrictedQuerySet)):
|
|||||||
return super().get_queryset().filter(file_root='reports')
|
return super().get_queryset().filter(file_root='reports')
|
||||||
|
|
||||||
|
|
||||||
class ReportModule(JobResultsMixin, WebhooksMixin, PythonModuleMixin, ManagedFile):
|
class ReportModule(PythonModuleMixin, ManagedFile):
|
||||||
"""
|
"""
|
||||||
Proxy model for report module files.
|
Proxy model for report module files.
|
||||||
"""
|
"""
|
||||||
|
@ -94,7 +94,7 @@ urlpatterns = [
|
|||||||
|
|
||||||
# Reports
|
# Reports
|
||||||
path('reports/', views.ReportListView.as_view(), name='report_list'),
|
path('reports/', views.ReportListView.as_view(), name='report_list'),
|
||||||
path('reports/add/', views.ScriptModuleCreateView.as_view(), name='reportmodule_add'),
|
path('reports/add/', views.ReportModuleCreateView.as_view(), name='reportmodule_add'),
|
||||||
path('reports/results/<int:job_result_pk>/', views.ReportResultView.as_view(), name='report_result'),
|
path('reports/results/<int:job_result_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/<str:module>.<str:name>/', views.ReportView.as_view(), name='report'),
|
||||||
|
@ -827,7 +827,7 @@ class ReportListView(ContentTypePermissionRequiredMixin, View):
|
|||||||
}
|
}
|
||||||
|
|
||||||
return render(request, 'extras/report_list.html', {
|
return render(request, 'extras/report_list.html', {
|
||||||
'model': ScriptModule,
|
'model': ReportModule,
|
||||||
'report_modules': report_modules,
|
'report_modules': report_modules,
|
||||||
'job_results': job_results,
|
'job_results': job_results,
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user