Create view / form / URL for PartParameter creation

This commit is contained in:
Oliver Walters 2019-08-20 14:14:21 +10:00
parent db834802e3
commit c68c79ea43
5 changed files with 68 additions and 13 deletions

View File

@ -11,6 +11,7 @@ from django import forms
from .models import Part, PartCategory, PartAttachment
from .models import BomItem
from .models import PartParameterTemplate, PartParameter
class PartImageForm(HelperForm):
@ -98,6 +99,18 @@ class EditPartForm(HelperForm):
]
class EditPartParameterForm(HelperForm):
""" Form for editing a PartParameter object """
class Meta:
model = PartParameter
fields = [
'part',
'template',
'data'
]
class EditCategoryForm(HelperForm):
""" Form for editing a PartCategory object """

View File

@ -1066,6 +1066,11 @@ class PartParameterTemplate(models.Model):
except PartParameterTemplate.DoesNotExist:
pass
@property
def instance_count(self):
""" Return the number of instances of this Parameter Template """
return self.instances.count()
name = models.CharField(max_length=100, help_text='Parameter Name')
units = models.CharField(max_length=25, help_text='Parameter Units', blank=True)

View File

@ -7,20 +7,29 @@
<h4>Part Parameters</h4>
<hr>
<div id='button-toolbar'>
<div class='button-toolbar container-fluid' style='float: right;'>
<button class='btn btn-success' id='param-create'>New Parameter</button>
</div>
</div>
<table class='table table-condensed table-striped'>
<tr>
<th>Name</th>
<th>Value</th>
<th>Units</th>
</tr>
{% for param in part.get_parameters %}
<tr>
<td>{{ param.template.name }}</td>
<td>{{ param.data }}</td>
<td>{{ param.template.units }}</td>
</tr>
{% endfor %}
<table id='param-table' class='table table-condensed table-striped' data-toolbar='#button-toolbar'>
<thead>
<tr>
<th data-field='name' data-serachable='true'>Name</th>
<th data-field='value' data-searchable='true'>Value</th>
<th data-field='units' data-searchable='true'>Units</th>
</tr>
</thead>
<tbody>
{% for param in part.get_parameters %}
<tr>
<td>{{ param.template.name }}</td>
<td>{{ param.data }}</td>
<td>{{ param.template.units }}</td>
</tr>
{% endfor %}
</tbody>
</table>
@ -29,4 +38,15 @@
{% block js_ready %}
{{ block.super }}
$('#param-table').bootstrapTable({
search: true,
sortable: true,
});
$('#param-create').click(function() {
launchModalForm("{% url 'part-param-create' %}?part={{ part.id }}", {
reload: true,
});
});
{% endblock %}

View File

@ -18,6 +18,10 @@ part_attachment_urls = [
url(r'^(?P<pk>\d+)/delete/?', views.PartAttachmentDelete.as_view(), name='part-attachment-delete'),
]
part_parameter_urls = [
url('^new/?', views.PartParameterCreate.as_view(), name='part-param-create'),
]
part_detail_urls = [
url(r'^edit/?', views.PartEdit.as_view(), name='part-edit'),
url(r'^delete/?', views.PartDelete.as_view(), name='part-delete'),
@ -91,6 +95,9 @@ part_urls = [
# Part attachments
url(r'^attachment/', include(part_attachment_urls)),
# Part parameters
url(r'^parameter/', include(part_parameter_urls)),
# Change category for multiple parts
url(r'^set-category/?', views.PartSetCategory.as_view(), name='part-set-category'),

View File

@ -19,6 +19,7 @@ import tablib
from fuzzywuzzy import fuzz
from .models import PartCategory, Part, PartAttachment
from .models import PartParameterTemplate, PartParameter
from .models import BomItem
from .models import match_part_names
@ -1396,6 +1397,15 @@ class PartPricing(AjaxView):
return self.renderJsonResponse(request, self.form_class(), data=data, context=self.get_pricing(quantity))
class PartParameterCreate(AjaxCreateView):
""" View for creating a new PartParameter """
model = PartParameter
form_class = part_forms.EditPartParameterForm
ajax_form_title = 'Create Part Parameter'
class CategoryDetail(DetailView):
""" Detail view for PartCategory """
model = PartCategory