mirror of
				https://github.com/inventree/demo-dataset.git
				synced 2025-10-31 21:45:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| 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
 | |
|                 }
 | |
|             ) |