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:
@ -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();
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
@ -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'),
|
||||
|
@ -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."""
|
||||
|
||||
|
Reference in New Issue
Block a user