2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-01 03:00:54 +00:00

Refactor stock item test result form for API (#3143)

* Fix "polarity" of modal form submit button

(cherry picked from commit 0e4550f288)

* Use existing API functionality to delete all test results for a particular StockItem

* Remove outdated forms / views
This commit is contained in:
Oliver
2022-06-06 21:27:19 +10:00
committed by GitHub
parent 121c5d107e
commit ea83d4b290
6 changed files with 48 additions and 135 deletions

View File

@ -265,10 +265,49 @@
{% if user.is_staff %}
$("#delete-test-results").click(function() {
launchModalForm(
"{% url 'stock-item-delete-test-data' item.id %}",
var url = '{% url "api-stock-test-result-list" %}';
inventreeGet(
url,
{
success: reloadTable,
stock_item: {{ item.pk }},
},
{
success: function(response) {
var results = [];
// Ensure that we are only deleting the correct test results
response.forEach(function(item) {
if (item.stock_item == {{ item.pk }}) {
results.push(item);
}
});
var html = `
<div class='alert alert-block alert-danger'>
{% trans "Delete all test results for this stock item" %}
</div>`;
constructFormBody({}, {
method: 'DELETE',
title: '{% trans "Delete Test Data" %}',
preFormContent: html,
onSubmit: function(fields, opts) {
inventreeMultiDelete(
url,
results,
{
modal: opts.modal,
success: function() {
reloadTable();
}
}
)
}
});
}
}
);
});

View File

@ -20,7 +20,6 @@ stock_item_detail_urls = [
re_path(r'^convert/', views.StockItemConvert.as_view(), name='stock-item-convert'),
re_path(r'^delete/', views.StockItemDelete.as_view(), name='stock-item-delete'),
re_path(r'^qr_code/', views.StockItemQRCode.as_view(), name='stock-item-qr'),
re_path(r'^delete_test_data/', views.StockItemDeleteTestData.as_view(), name='stock-item-delete-test-data'),
# Anything else - direct to the item detail view
re_path('^.*$', views.StockItemDetail.as_view(), name='stock-item-detail'),

View File

@ -6,8 +6,6 @@ from django.utils.translation import gettext_lazy as _
from django.views.generic import DetailView, ListView
import common.settings
from InvenTree.forms import ConfirmForm
from InvenTree.helpers import str2bool
from InvenTree.views import (AjaxDeleteView, AjaxUpdateView,
InvenTreeRoleMixin, QRCodeView)
from plugin.views import InvenTreePluginViewMixin
@ -123,42 +121,6 @@ class StockLocationQRCode(QRCodeView):
return None
class StockItemDeleteTestData(AjaxUpdateView):
"""View for deleting all test data."""
model = StockItem
form_class = ConfirmForm
ajax_form_title = _("Delete All Test Data")
role_required = ['stock.change', 'stock.delete']
def get_form(self):
"""Require confirm."""
return ConfirmForm()
def post(self, request, *args, **kwargs):
"""Delete test data."""
valid = False
stock_item = StockItem.objects.get(pk=self.kwargs['pk'])
form = self.get_form()
confirm = str2bool(request.POST.get('confirm', False))
if confirm is not True:
form.add_error('confirm', _('Confirm test data deletion'))
form.add_error(None, _('Check the confirmation box'))
else:
stock_item.test_results.all().delete()
valid = True
data = {
'form_valid': valid,
}
return self.renderJsonResponse(request, form, data)
class StockItemQRCode(QRCodeView):
"""View for displaying a QR code for a StockItem object."""