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'