Refactor forms for PartTestTemplate model:

- Remove old forms
- Remove old views
- Add detail endpoint for the API
This commit is contained in:
Oliver 2021-07-01 14:44:23 +10:00
parent 9d1c1b98df
commit bfc5a7dcf8
5 changed files with 50 additions and 95 deletions

View File

@ -241,6 +241,15 @@ class PartAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixi
serializer_class = part_serializers.PartAttachmentSerializer serializer_class = part_serializers.PartAttachmentSerializer
class PartTestTemplateDetail(generics.RetrieveUpdateDestroyAPIView):
"""
Detail endpoint for PartTestTemplate model
"""
queryset = PartTestTemplate.objects.all()
serializer_class = part_serializers.PartTestTemplateSerializer
class PartTestTemplateList(generics.ListCreateAPIView): class PartTestTemplateList(generics.ListCreateAPIView):
""" """
API endpoint for listing (and creating) a PartTestTemplate. API endpoint for listing (and creating) a PartTestTemplate.
@ -1036,6 +1045,7 @@ part_api_urls = [
# Base URL for PartTestTemplate API endpoints # Base URL for PartTestTemplate API endpoints
url(r'^test-template/', include([ url(r'^test-template/', include([
url(r'^(?P<pk>\d+)/', PartTestTemplateDetail.as_view(), name='api-part-test-template-detail'),
url(r'^$', PartTestTemplateList.as_view(), name='api-part-test-template-list'), url(r'^$', PartTestTemplateList.as_view(), name='api-part-test-template-list'),
])), ])),

View File

@ -5,21 +5,21 @@ Django Forms for interacting with Part objects
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals from __future__ import unicode_literals
from django import forms
from django.utils.translation import ugettext_lazy as _
from mptt.fields import TreeNodeChoiceField
from InvenTree.forms import HelperForm from InvenTree.forms import HelperForm
from InvenTree.helpers import GetExportFormats from InvenTree.helpers import GetExportFormats
from InvenTree.fields import RoundingDecimalFormField from InvenTree.fields import RoundingDecimalFormField
from mptt.fields import TreeNodeChoiceField
from django import forms
from django.utils.translation import ugettext_lazy as _
import common.models import common.models
from .models import Part, PartCategory, PartRelated from .models import Part, PartCategory, PartRelated
from .models import BomItem from .models import BomItem
from .models import PartParameterTemplate, PartParameter from .models import PartParameterTemplate, PartParameter
from .models import PartCategoryParameterTemplate from .models import PartCategoryParameterTemplate
from .models import PartTestTemplate
from .models import PartSellPriceBreak, PartInternalPriceBreak from .models import PartSellPriceBreak, PartInternalPriceBreak
@ -65,22 +65,6 @@ class PartImageForm(HelperForm):
] ]
class EditPartTestTemplateForm(HelperForm):
""" Class for creating / editing a PartTestTemplate object """
class Meta:
model = PartTestTemplate
fields = [
'part',
'test_name',
'description',
'required',
'requires_value',
'requires_attachment',
]
class BomExportForm(forms.Form): class BomExportForm(forms.Form):
""" Simple form to let user set BOM export options, """ Simple form to let user set BOM export options,
before exporting a BOM (bill of materials) file. before exporting a BOM (bill of materials) file.

View File

@ -44,34 +44,52 @@ function reloadTable() {
} }
$("#add-test-template").click(function() { $("#add-test-template").click(function() {
launchModalForm(
"{% url 'part-test-template-create' %}", constructForm('{% url "api-part-test-template-list" %}', {
{ method: 'POST',
data: { fields: {
part: {{ part.id }}, test_name: {},
}, description: {},
success: reloadTable, required: {},
} requires_value: {},
); requires_attachment: {},
part: {
value: {{ part.pk }},
hidden: true,
}
},
title: '{% trans "Add Test Result Template" %}',
onSuccess: reloadTable
});
}); });
$("#test-template-table").on('click', '.button-test-edit', function() { $("#test-template-table").on('click', '.button-test-edit', function() {
var button = $(this); var pk = $(this).attr('pk');
var url = `/part/test-template/${button.attr('pk')}/edit/`; var url = `/api/part/test-template/${pk}/`;
launchModalForm(url, { constructForm(url, {
success: reloadTable, fields: {
test_name: {},
description: {},
required: {},
requires_value: {},
requires_attachment: {},
},
title: '{% trans "Edit Test Result Template" %}',
onSuccess: reloadTable,
}); });
}); });
$("#test-template-table").on('click', '.button-test-delete', function() { $("#test-template-table").on('click', '.button-test-delete', function() {
var button = $(this); var pk = $(this).attr('pk');
var url = `/part/test-template/${button.attr('pk')}/delete/`; var url = `/api/part/test-template/${pk}/`;
launchModalForm(url, { constructForm(url, {
success: reloadTable, method: 'DELETE',
title: '{% trans "Delete Test Result Template" %}',
onSuccess: reloadTable,
}); });
}); });

View File

@ -148,13 +148,6 @@ part_urls = [
# Part internal price breaks # Part internal price breaks
url(r'^internal-price/', include(internal_price_break_urls)), url(r'^internal-price/', include(internal_price_break_urls)),
# Part test templates
url(r'^test-template/', include([
url(r'^new/', views.PartTestTemplateCreate.as_view(), name='part-test-template-create'),
url(r'^(?P<pk>\d+)/edit/', views.PartTestTemplateEdit.as_view(), name='part-test-template-edit'),
url(r'^(?P<pk>\d+)/delete/', views.PartTestTemplateDelete.as_view(), name='part-test-template-delete'),
])),
# Part parameters # Part parameters
url(r'^parameter/', include(part_parameter_urls)), url(r'^parameter/', include(part_parameter_urls)),

View File

@ -36,7 +36,6 @@ from .models import PartParameterTemplate, PartParameter
from .models import PartCategoryParameterTemplate from .models import PartCategoryParameterTemplate
from .models import BomItem from .models import BomItem
from .models import match_part_names from .models import match_part_names
from .models import PartTestTemplate
from .models import PartSellPriceBreak, PartInternalPriceBreak from .models import PartSellPriceBreak, PartInternalPriceBreak
from common.models import InvenTreeSetting from common.models import InvenTreeSetting
@ -154,55 +153,6 @@ class PartRelatedDelete(AjaxDeleteView):
role_required = 'part.change' role_required = 'part.change'
class PartTestTemplateCreate(AjaxCreateView):
""" View for creating a PartTestTemplate """
model = PartTestTemplate
form_class = part_forms.EditPartTestTemplateForm
ajax_form_title = _("Create Test Template")
def get_initial(self):
initials = super().get_initial()
try:
part_id = self.request.GET.get('part', None)
initials['part'] = Part.objects.get(pk=part_id)
except (ValueError, Part.DoesNotExist):
pass
return initials
def get_form(self):
form = super().get_form()
form.fields['part'].widget = HiddenInput()
return form
class PartTestTemplateEdit(AjaxUpdateView):
""" View for editing a PartTestTemplate """
model = PartTestTemplate
form_class = part_forms.EditPartTestTemplateForm
ajax_form_title = _("Edit Test Template")
def get_form(self):
form = super().get_form()
form.fields['part'].widget = HiddenInput()
return form
class PartTestTemplateDelete(AjaxDeleteView):
""" View for deleting a PartTestTemplate """
model = PartTestTemplate
ajax_form_title = _("Delete Test Template")
class PartSetCategory(AjaxUpdateView): 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 """