Skip to content

Commit 260de07

Browse files
committed
Override StockItem create to accept list of results
1 parent 47b9a35 commit 260de07

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

inventree/stock.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
import inventree.report
1212

1313

14+
logger = logging.getLogger('inventree')
15+
16+
1417
class StockLocation(
1518
inventree.base.BarcodeMixin,
1619
inventree.base.MetadataMixin,
@@ -58,6 +61,31 @@ class StockItem(
5861

5962
MODEL_TYPE = 'stockitem'
6063

64+
@classmethod
65+
def create(cls, api, data, **kwargs):
66+
""" Override default create method to support multiple object return. """
67+
68+
cls.checkApiVersion(api)
69+
70+
# Ensure the pk value is None so an existing object is not updated
71+
if cls.getPkField() in data.keys():
72+
data.pop(cls.getPkField())
73+
74+
response = api.post(cls.URL, data, **kwargs)
75+
76+
if response is None:
77+
logger.error("Error creating new object")
78+
return None
79+
80+
if isinstance(response, list):
81+
allResponses = []
82+
for element in response:
83+
allResponses.append(cls(api, data=element))
84+
return allResponses
85+
86+
else:
87+
return [cls(api, data=response)]
88+
6189
@classmethod
6290
def adjustStockItems(cls, api: inventree.api.InvenTreeAPI, method: str, items: list, **kwargs):
6391
"""Perform a generic stock 'adjustment' action.

test/test_api.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,7 @@ def test_create_stuff(self):
209209
'part': p.pk,
210210
'quantity': 45,
211211
'notes': 'This is a note',
212-
213-
})
212+
})[0]
214213

215214
self.assertIsNotNone(s)
216215
self.assertEqual(s.part, p.pk)

test/test_stock.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,10 @@ def test_assign_stock(self):
426426
}
427427
)
428428

429+
# Verify a single result was returned
430+
self.assertEqual(1, len(assignitem))
431+
assignitem = assignitem[0]
432+
429433
# Assign the item
430434
assignitem.assignStock(customer=customer, notes='Sell on the side')
431435

0 commit comments

Comments
 (0)