diff --git a/scripts/pin_headers.py b/scripts/pin_headers.py new file mode 100644 index 0000000..d04efec --- /dev/null +++ b/scripts/pin_headers.py @@ -0,0 +1,97 @@ + +from random import randint + +from inventree.api import InvenTreeAPI + +from inventree.part import Part, Parameter, ParameterTemplate +from inventree.stock import StockItem + +api = InvenTreeAPI("http://localhost:8000", username="admin", password="inventree") + +# Pin headers category +cat_id = 21 + +# Storage location +loc_id = 10 + +rows = [1, 2] +pitch = [1.27, 2.0, 2.54] +ways = range(2, 11) + +# Parameter templates +templates = {} + +for tmp in ParameterTemplate.list(api): + templates[tmp.name] = tmp.pk + +for r in rows: + for p in pitch: + for w in ways: + + n = r * w + + name = f"PinHeader_{r}x{w:02d}x{p}mm" + description = f"Male pin header connector, {r} rows, {n} positions, {p}mm pitch, vertical" + keywords = "pin header connector" + + # Check if this part already exists + results = Part.list(api, search=name) + + if len(results) > 0: + part = results[0] + else: + part = Part.create( + api, + { + 'name': name, + 'description': description, + 'keywords': keywords, + 'category': cat_id, + 'purchaseable': True, + 'component': True, + } + ) + + # Create stock item for this item + items = StockItem.list(api, part=part.pk) + + if len(items) == 0: + q = randint(0, 25) + + if q > 0: + StockItem.create( + api, + { + 'part': part.pk, + 'quantity': q, + 'location': loc_id, + } + ) + + # Generate parameters for each item + Parameter.create( + api, + { + 'part': part.pk, + 'template': templates['Pitch'], + 'data': p + } + ) + + Parameter.create( + api, + { + 'part': part.pk, + 'template': templates['Positions'], + 'data': n + } + ) + + Parameter.create( + api, + { + 'part': part.pk, + 'template': templates['Rows'], + 'data': r + } + ) \ No newline at end of file