diff --git a/InvenTree/part/forms.py b/InvenTree/part/forms.py
index 88ff2f2599..971373ed9b 100644
--- a/InvenTree/part/forms.py
+++ b/InvenTree/part/forms.py
@@ -7,6 +7,7 @@ from __future__ import unicode_literals
from InvenTree.forms import HelperForm
+from mptt.fields import TreeNodeChoiceField
from django import forms
from django.utils.translation import ugettext as _
@@ -66,6 +67,12 @@ class EditPartAttachmentForm(HelperForm):
]
+class SetPartCategoryForm(forms.Form):
+ """ Form for setting the category of multiple Part objects """
+
+ part_category = TreeNodeChoiceField(queryset=PartCategory.objects.all(), required=True, help_text=_('Select part category'))
+
+
class EditPartForm(HelperForm):
""" Form for editing a Part object """
diff --git a/InvenTree/part/templates/part/set_category.html b/InvenTree/part/templates/part/set_category.html
index 7e2dc801ac..71c8cc9975 100644
--- a/InvenTree/part/templates/part/set_category.html
+++ b/InvenTree/part/templates/part/set_category.html
@@ -2,57 +2,41 @@
{% block form %}
-{% endblock %}
\ No newline at end of file
+
+ {% for part in parts %}
+
+
+
+ {% include "hover_image.html" with image=part.image hover=False %}
+ {{ part.full_name }}
+
+
+ {{ part.description }}
+
+
+ {{ part.category.pathstring }}
+
+
+
+
+
+ {% endfor %}
+
+
+ {% crispy form %}
+
+
+ {% endblock %}
\ No newline at end of file
diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py
index 7d1a3ab633..87a3959266 100644
--- a/InvenTree/part/views.py
+++ b/InvenTree/part/views.py
@@ -138,11 +138,12 @@ class PartAttachmentDelete(AjaxDeleteView):
}
-class PartSetCategory(AjaxView):
+class PartSetCategory(AjaxUpdateView):
""" View for settings the part category for multiple parts at once """
ajax_template_name = 'part/set_category.html'
ajax_form_title = 'Set Part Category'
+ form_class = part_forms.SetPartCategoryForm
category = None
parts = []
@@ -157,7 +158,7 @@ class PartSetCategory(AjaxView):
else:
self.parts = []
- return self.renderJsonResponse(request, context=self.get_context_data())
+ return self.renderJsonResponse(request, form=self.get_form(), context=self.get_context_data())
def post(self, request, *args, **kwargs):
""" Respond to a POST request to this view """
@@ -196,7 +197,7 @@ class PartSetCategory(AjaxView):
for part in self.parts:
part.set_category(self.category)
- return self.renderJsonResponse(request, data=data, context=self.get_context_data())
+ return self.renderJsonResponse(request, data=data, form=self.get_form(), context=self.get_context_data())
def get_context_data(self):
""" Return context data for rendering in the form """