From 0cc59540ef57ff6483a63e1dcb7fa2f1f7564410 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 13 Apr 2019 21:04:23 +1000 Subject: [PATCH] Generate modal form to export BOM - Doesn't do anything yet - Extends AjaxView --- InvenTree/part/templates/part/bom.html | 17 +++++++++++++ InvenTree/part/templates/part/bom_export.html | 3 +++ InvenTree/part/urls.py | 1 + InvenTree/part/views.py | 24 ++++++++++++++++++- 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 InvenTree/part/templates/part/bom_export.html diff --git a/InvenTree/part/templates/part/bom.html b/InvenTree/part/templates/part/bom.html index 7b9e829686..139cc81961 100644 --- a/InvenTree/part/templates/part/bom.html +++ b/InvenTree/part/templates/part/bom.html @@ -18,6 +18,10 @@ +
+ +
+ {% endblock %} {% block js_ready %} {{ block.super }} @@ -57,6 +61,19 @@ }); }); + $("#export-bom").click(function () { + launchModalForm( + "{% url 'bom-export' part.id %}", + { + /* + reload: true, + data: { + format: 'csv', + } + */ + }); + }); + $("#bom-table").bootstrapTable({ sortable: true, search: true, diff --git a/InvenTree/part/templates/part/bom_export.html b/InvenTree/part/templates/part/bom_export.html new file mode 100644 index 0000000000..8be56f2dbc --- /dev/null +++ b/InvenTree/part/templates/part/bom_export.html @@ -0,0 +1,3 @@ +Export BOM for {{ part.name }} + +{% include "modal_csrf.html" %} \ No newline at end of file diff --git a/InvenTree/part/urls.py b/InvenTree/part/urls.py index ab680e4b52..3bb19f27a5 100644 --- a/InvenTree/part/urls.py +++ b/InvenTree/part/urls.py @@ -20,6 +20,7 @@ part_detail_urls = [ url(r'^delete/?', views.PartDelete.as_view(), name='part-delete'), url(r'^track/?', views.PartDetail.as_view(template_name='part/track.html'), name='part-track'), url(r'^bom/?', views.PartDetail.as_view(template_name='part/bom.html'), name='part-bom'), + url(r'^export-bom/?', views.BomExport.as_view(), name='bom-export'), url(r'^build/?', views.PartDetail.as_view(template_name='part/build.html'), name='part-build'), url(r'^stock/?', views.PartDetail.as_view(template_name='part/stock.html'), name='part-stock'), url(r'^used/?', views.PartDetail.as_view(template_name='part/used_in.html'), name='part-used-in'), diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index 9bb42722eb..7524949111 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -18,7 +18,7 @@ from .forms import EditBomItemForm from .forms import EditSupplierPartForm -from InvenTree.views import AjaxCreateView, AjaxUpdateView, AjaxDeleteView +from InvenTree.views import AjaxView, AjaxCreateView, AjaxUpdateView, AjaxDeleteView class PartIndex(ListView): @@ -110,6 +110,28 @@ class PartEdit(AjaxUpdateView): ajax_form_title = 'Edit Part Properties' +class BomExport(AjaxView): + + model = Part + template_name = 'part/bom_export.html' + #ajax_template_name = 'modal_form.html' + ajax_form_title = 'Export Bill of Materials' + ajax_submit_text = 'Export' + context_object_name = 'part' + fields = [] + + def post(self, request, *args, **kwargs): + + part = get_object_or_404(Part, pk=self.kwargs['pk']) + + return self.renderJsonResponse(request, None) + + def get_data(self): + return { + 'info': 'Exported BOM' + } + + class PartDelete(AjaxDeleteView): model = Part template_name = 'part/delete.html'