From 4c8bc9580c6cf790c99c87300a80201bd3c04122 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 2 Nov 2021 19:51:46 +1100 Subject: [PATCH] stock-item-edit is looking OK now --- .../stock/templates/stock/item_base.html | 12 ++--- InvenTree/stock/test_views.py | 16 +++--- InvenTree/stock/urls.py | 1 - InvenTree/templates/js/translated/stock.js | 51 ++++++++++--------- 4 files changed, 37 insertions(+), 43 deletions(-) diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index 5a58e2e04f..525b6767d6 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -471,14 +471,10 @@ $("#stock-duplicate").click(function() { }); }); -$("#stock-edit").click(function () { - launchModalForm( - "{% url 'stock-item-edit' item.id %}", - { - reload: true, - submit_text: '{% trans "Save" %}', - } - ); +$('#stock-edit').click(function() { + editStockItem({{ item.pk }}, { + reload: true, + }); }); $('#stock-edit-status').click(function () { diff --git a/InvenTree/stock/test_views.py b/InvenTree/stock/test_views.py index 9494598430..6d22c7e4bb 100644 --- a/InvenTree/stock/test_views.py +++ b/InvenTree/stock/test_views.py @@ -105,15 +105,6 @@ class StockItemTest(StockViewTestCase): response = self.client.get(reverse('stock-item-qr', args=(9999,)), HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) - def test_edit_item(self): - # Test edit view for StockItem - response = self.client.get(reverse('stock-item-edit', args=(1,)), HTTP_X_REQUESTED_WITH='XMLHttpRequest') - self.assertEqual(response.status_code, 200) - - # Test with a non-purchaseable part - response = self.client.get(reverse('stock-item-edit', args=(100,)), HTTP_X_REQUESTED_WITH='XMLHttpRequest') - self.assertEqual(response.status_code, 200) - def test_create_item(self): """ Test creation of StockItem @@ -273,11 +264,15 @@ class StockOwnershipTest(StockViewTestCase): HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertContains(response, '"form_valid": true', status_code=200) + """ + TODO: Refactor this following test to use the new API form # Set ownership on existing item (and change location) response = self.client.post(reverse('stock-item-edit', args=(test_item_id,)), {'part': 1, 'status': StockStatus.OK, 'owner': user_as_owner.pk}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + self.assertContains(response, '"form_valid": true', status_code=200) + """ # Logout self.client.logout() @@ -294,6 +289,8 @@ class StockOwnershipTest(StockViewTestCase): location = StockLocation.objects.get(pk=test_location_id) self.assertEqual(location.owner, user_group_owner) + """ + TODO: Refactor this following test to use the new API form # Test item edit response = self.client.post(reverse('stock-item-edit', args=(test_item_id,)), {'part': 1, 'status': StockStatus.OK, 'owner': new_user_as_owner.pk}, @@ -302,6 +299,7 @@ class StockOwnershipTest(StockViewTestCase): # Make sure the item's owner is unchanged item = StockItem.objects.get(pk=test_item_id) self.assertEqual(item.owner, user_as_owner) + """ # Create new parent location parent_location = { diff --git a/InvenTree/stock/urls.py b/InvenTree/stock/urls.py index 434acde84e..d3e7090652 100644 --- a/InvenTree/stock/urls.py +++ b/InvenTree/stock/urls.py @@ -22,7 +22,6 @@ location_urls = [ ] stock_item_detail_urls = [ - url(r'^edit/', views.StockItemEdit.as_view(), name='stock-item-edit'), url(r'^convert/', views.StockItemConvert.as_view(), name='stock-item-convert'), url(r'^serialize/', views.StockItemSerialize.as_view(), name='stock-item-serialize'), url(r'^delete/', views.StockItemDelete.as_view(), name='stock-item-delete'), diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index 9268dcefc9..174e675426 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -131,34 +131,35 @@ function editStockItem(pk, options={}) { // Prevent editing of the "part" fields.part.hidden = true; - var groups = stockItemGroups(options); + options.groups = stockItemGroups(options); - constructForm(url, { - fields: fields, - groups: groups, - title: '{% trans "Edit Stock Item" %}', - params: { - part_detail: true, - supplier_part_detail: true, - }, - processResults: function(data, fields, options) { - // Callback when StockItem data is received from server + options.fields = fields; + options.title = '{% trans "Edit Stock Item" %}'; + + // Query parameters for retrieving stock item data + options.params = { + part_detail: true, + supplier_part_detail: true, + }; - if (data.part_detail.trackable) { - delete options.fields.delete_on_deplete; - } else { - // Remove serial number field if part is not trackable - delete options.fields.serial; - } - - // Remove pricing fields if part is not purchaseable - if (!data.part_detail.purchaseable) { - delete options.fields.supplier_part; - delete options.fields.purchase_price; - delete options.fields.purchase_price_currency; - } + // Augment the rendered form when we receive information about the StockItem + options.processResults = function(data, fields, options) { + if (data.part_detail.trackable) { + delete options.fields.delete_on_deplete; + } else { + // Remove serial number field if part is not trackable + delete options.fields.serial; } - }); + + // Remove pricing fields if part is not purchaseable + if (!data.part_detail.purchaseable) { + delete options.fields.supplier_part; + delete options.fields.purchase_price; + delete options.fields.purchase_price_currency; + } + }; + + constructForm(url, options); }