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 InvenTree.forms import HelperForm
from mptt.fields import TreeNodeChoiceField
from django import forms from django import forms
from django.utils.translation import ugettext as _ 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): class EditPartForm(HelperForm):
""" Form for editing a Part object """ """ Form for editing a Part object """

View File

@ -2,26 +2,8 @@
{% block form %} {% block form %}
<form method="post" action='' class='js-modal-form' enctype="multipart/form-data"> <form method="post" action='' class='js-modal-form' enctype="multipart/form-data">
{% csrf_token %}
{% load crispy_forms_tags %} {% 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> <label class='control-label'>Parts</label>
<p class='help-block'>Set category for the following parts</p> <p class='help-block'>Set category for the following parts</p>
@ -31,28 +13,30 @@
<th>Description</th> <th>Description</th>
<th>Category</th> <th>Category</th>
<th> <th>
</tr> </tr>
{% for part in parts %} {% for part in parts %}
<tr id='part_row_{{ part.id }}'> <tr id='part_row_{{ part.id }}'>
<input type='hidden' name='part_id_{{ part.id }}' value='1'/> <input type='hidden' name='part_id_{{ part.id }}' value='1'/>
<td> <td>
{% include "hover_image.html" with image=part.image hover=False %} {% include "hover_image.html" with image=part.image hover=False %}
{{ part.full_name }} {{ part.full_name }}
</td> </td>
<td> <td>
{{ part.description }} {{ part.description }}
</td> </td>
<td> <td>
{{ part.category.pathstring }} {{ part.category.pathstring }}
</td> </td>
<td> <td>
<button class='btn btn-default btn-remove' onClick='removeRowFromModalForm()' title='Remove part' type='button'> <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> <span row='part_row_{{ part.id }}' class='glyphicon glyphicon-small glyphicon-remove'></span>
</button> </button>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</form> {% crispy form %}
{% endblock %}
</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 """ """ View for settings the part category for multiple parts at once """
ajax_template_name = 'part/set_category.html' ajax_template_name = 'part/set_category.html'
ajax_form_title = 'Set Part Category' ajax_form_title = 'Set Part Category'
form_class = part_forms.SetPartCategoryForm
category = None category = None
parts = [] parts = []
@ -157,7 +158,7 @@ class PartSetCategory(AjaxView):
else: else:
self.parts = [] 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): def post(self, request, *args, **kwargs):
""" Respond to a POST request to this view """ """ Respond to a POST request to this view """
@ -196,7 +197,7 @@ class PartSetCategory(AjaxView):
for part in self.parts: for part in self.parts:
part.set_category(self.category) 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): def get_context_data(self):
""" Return context data for rendering in the form """ """ Return context data for rendering in the form """