Add form for setting part category

This commit is contained in:
Oliver Walters 2019-09-17 14:06:11 +10:00
parent 94cd28ecb9
commit 08f958dd72
3 changed files with 40 additions and 48 deletions

View File

@ -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 """

View File

@ -2,57 +2,41 @@
{% block form %}
<form method="post" action='' class='js-modal-form' enctype="multipart/form-data">
{% csrf_token %}
{% load crispy_forms_tags %}
<div class='control-group'>
<label class='control-label requiredField'>Part Category</label>
<div class='controls'>
<select class='select' name='part_category'>
<option value=''>---------</option>
{% for cat in categories %}
<option value='{{ cat.id }}' {% if category and category.id == cat.id %}selected='selected'{% endif %}>{{ cat.pathstring }} - {{ cat.description }}</option>
{% endfor %}
</select>
{% if category %}
<p class='help-block'>Select Part Category</p>
{% else %}
<p class='help-inline'>Select Part Category</p>
{% endif %}
</div>
</div>
<label class='control-label'>Parts</label>
<p class='help-block'>Set category for the following parts</p>
<table class='table table-striped'>
<tr>
<th>Part</th>
<th>Description</th>
<th>Category</th>
<th>
</tr>
{% for part in parts %}
<tr id='part_row_{{ part.id }}'>
<input type='hidden' name='part_id_{{ part.id }}' value='1'/>
<td>
{% include "hover_image.html" with image=part.image hover=False %}
{{ part.full_name }}
</td>
<td>
{{ part.description }}
</td>
<td>
{{ part.category.pathstring }}
</td>
<td>
<button class='btn btn-default btn-remove' onClick='removeRowFromModalForm()' title='Remove part' type='button'>
<span row='part_row_{{ part.id }}' class='glyphicon glyphicon-small glyphicon-remove'></span>
</button>
</td>
</tr>
{% endfor %}
</table>
</form>
{% endblock %}
</tr>
{% for part in parts %}
<tr id='part_row_{{ part.id }}'>
<input type='hidden' name='part_id_{{ part.id }}' value='1'/>
<td>
{% include "hover_image.html" with image=part.image hover=False %}
{{ part.full_name }}
</td>
<td>
{{ part.description }}
</td>
<td>
{{ part.category.pathstring }}
</td>
<td>
<button class='btn btn-default btn-remove' onClick='removeRowFromModalForm()' title='Remove part' type='button'>
<span row='part_row_{{ part.id }}' class='glyphicon glyphicon-small glyphicon-remove'></span>
</button>
</td>
</tr>
{% endfor %}
</table>
{% crispy form %}
</form>
{% endblock %}

View File

@ -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 """