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
class PartTestTemplateDetail(generics.RetrieveUpdateDestroyAPIView):
"""
Detail endpoint for PartTestTemplate model
"""
queryset = PartTestTemplate.objects.all()
serializer_class = part_serializers.PartTestTemplateSerializer
class PartTestTemplateList(generics.ListCreateAPIView):
"""
API endpoint for listing (and creating) a PartTestTemplate.
@ -1036,6 +1045,7 @@ part_api_urls = [
# Base URL for PartTestTemplate API endpoints
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'),
])),

View File

@ -5,21 +5,21 @@ Django Forms for interacting with Part objects
# -*- coding: utf-8 -*-
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.helpers import GetExportFormats
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
from .models import Part, PartCategory, PartRelated
from .models import BomItem
from .models import PartParameterTemplate, PartParameter
from .models import PartCategoryParameterTemplate
from .models import PartTestTemplate
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):
""" Simple form to let user set BOM export options,
before exporting a BOM (bill of materials) file.

View File

@ -44,34 +44,52 @@ function reloadTable() {
}
$("#add-test-template").click(function() {
launchModalForm(
"{% url 'part-test-template-create' %}",
{
data: {
part: {{ part.id }},
},
success: reloadTable,
}
);
constructForm('{% url "api-part-test-template-list" %}', {
method: 'POST',
fields: {
test_name: {},
description: {},
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() {
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, {
success: reloadTable,
constructForm(url, {
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() {
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, {
success: reloadTable,
constructForm(url, {
method: 'DELETE',
title: '{% trans "Delete Test Result Template" %}',
onSuccess: reloadTable,
});
});

View File

@ -148,13 +148,6 @@ part_urls = [
# Part internal price breaks
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
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 BomItem
from .models import match_part_names
from .models import PartTestTemplate
from .models import PartSellPriceBreak, PartInternalPriceBreak
from common.models import InvenTreeSetting
@ -154,55 +153,6 @@ class PartRelatedDelete(AjaxDeleteView):
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):
""" View for settings the part category for multiple parts at once """