2
0
mirror of https://github.com/inventree/demo-dataset.git synced 2025-04-27 21:16:50 +00:00

Remove old scripts (#85)

This commit is contained in:
Oliver 2024-12-27 20:36:12 +11:00 committed by GitHub
parent b545c12e5a
commit 6c1149ff0b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 0 additions and 649 deletions

View File

@ -1,67 +0,0 @@
from inventree.api import InvenTreeAPI
from inventree.part import Part, PartCategory
from inventree.stock import StockItem, StockLocation
from inventree.company import SupplierPart
import random
import sys
INVENTREE_URL = "http://localhost:8000"
INVENTREE_USERNAME = "admin"
INVENTREE_PASSWORD = "inventree"
api = InvenTreeAPI(INVENTREE_URL, username=INVENTREE_USERNAME, password=INVENTREE_PASSWORD)
capacitors = Part.list(api, category=6)
storage = StockLocation(api, pk=8)
count = 0
for cap in capacitors:
if random.random() > 0.65:
continue
# Get the first matching supplierpart
sp_list = SupplierPart.list(api, part=cap.pk)
for sp in sp_list:
if random.random() > 0.6:
continue
status = 10
q = random.random()
quantity = 1000
if q < 0.1:
quantity = 500
elif q > 0.85:
quantity = 4000
if random.random() < 0.2:
quantity += int(random.random() * 2000)
if random.random() > 0.95:
status = 55 # Damaged
elif random.random() > 0.95:
status = 50 # Attention
StockItem.create(api, data={
'location': storage.pk,
'part': cap.pk,
'quantity': quantity,
'supplier_part': sp.pk,
'packaging': 'reel',
'status': status,
})
count += 1
print(f"Created {count} new stock items")

View File

@ -1,43 +0,0 @@
from inventree.api import InvenTreeAPI
from inventree.part import Part, PartCategory
from inventree.stock import StockItem, StockLocation
from inventree.company import SupplierPart
import random
import sys
INVENTREE_URL = "http://localhost:8000"
INVENTREE_USERNAME = "admin"
INVENTREE_PASSWORD = "inventree"
api = InvenTreeAPI(INVENTREE_URL, username=INVENTREE_USERNAME, password=INVENTREE_PASSWORD)
category = 6
packages = [
'0402',
'0603',
'0805',
]
values = [
# '100pF',
'100nF',
'1uF',
'10uF',
]
for package in packages:
for value in values:
name = f"C_{value}_{package}"
description = f"{value} in {package} SMD package"
keywords = "cap smd ceramic"
Part.create(api, data={
'name': name,
'category': category,
'description': description,
'keywords': keywords,
'purchaseable': True,
})

View File

@ -1,64 +0,0 @@
from inventree.api import InvenTreeAPI
from inventree.part import Part, PartCategory
from inventree.stock import StockItem, StockLocation
from inventree.company import SupplierPart
import random
import sys
INVENTREE_URL = "http://localhost:8000"
INVENTREE_USERNAME = "admin"
INVENTREE_PASSWORD = "inventree"
api = InvenTreeAPI(INVENTREE_URL, username=INVENTREE_USERNAME, password=INVENTREE_PASSWORD)
resistors = Part.list(api, category=5)
storage = StockLocation(api, pk=8)
count = 0
for resistor in resistors:
if random.random() > 0.65:
continue
q = random.random()
quantity = 1000
if q < 0.1:
quantity = 2000
elif q > 0.85:
quantity = 4000
# Get the first matching supplierpart
sp_list = SupplierPart.list(api, part=resistor.pk)
for sp in sp_list:
if random.random() > 0.6:
continue
status = 10
if random.random() > 0.95:
status = 55 # Damaged
elif random.random() > 0.95:
status = 50 # Attention
StockItem.create(api, data={
'location': storage.pk,
'part': resistor.pk,
'quantity': quantity,
'supplier_part': sp.pk,
'packaging': 'reel',
'status': status,
})
count += 1
print(f"Created {count} new stock items")

View File

@ -1,97 +0,0 @@
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
}
)

View File

@ -1,131 +0,0 @@
from inventree.api import InvenTreeAPI
from inventree.part import Part, PartCategory
from inventree.base import Parameter
from inventree.company import Company, ManufacturerPart, SupplierPart, ManufacturerPartParameter
import os
import sys
import digikey
from digikey.v3.productinformation import KeywordSearchRequest
os.environ['DIGIKEY_CLIENT_ID'] = 'DjV4w1v0ebNTiL7Nqvslw0GkNYuYdrLG'
os.environ['DIGIKEY_CLIENT_SECRET'] = 'dK0dTRimeq3aiPH1'
os.environ['DIGIKEY_CLIENT_SANDBOX'] = 'False'
os.environ['DIGIKEY_STORAGE_PATH'] = 'C:\\Users\\Oliver\\Desktop\\digikey\\'
INVENTREE_URL = "http://localhost:8000"
INVENTREE_USERNAME = "admin"
INVENTREE_PASSWORD = "inventree"
inventree = InvenTreeAPI(INVENTREE_URL, username=INVENTREE_USERNAME, password=INVENTREE_PASSWORD)
resistors = Part.list(inventree, category=5)
def getParameter(result, name):
for param in result.parameters:
if param.parameter.lower() == name.lower():
return param
return None
def getValue(result, name):
param = getParameter(result, name)
if param:
return param.value
else:
return None
manufacturers = {}
DIGIKEY_PK = 1
for res in resistors:
search_term = res.name.replace('_', ' ').replace('R ' , 'Resistor ')
print(res.name, res.description)
request = KeywordSearchRequest(search_term, record_count=25)
result = digikey.keyword_search(body=request)
# Set of manufacturer part numbers
MPN = set()
for product in result.products:
mpn = product.manufacturer_part_number
print(f"> {mpn}")
if mpn in MPN or len(MPN) >= 5:
continue
MPN.add(mpn)
sku = product.digi_key_part_number
man_name = product.manufacturer.value
if man_name in manufacturers.keys():
manufacturer = manufacturers[man_name]
else:
# Search InvenTree for manufacturer name
query = Company.list(inventree, search=man_name)
if len(query) == 0:
print(f"Creating new manufacturer: '{man_name}'")
manufacturer = Company.create(inventree, data={
'is_supplier': False,
'is_manufacturer': True,
'name': man_name,
})
else:
manufacturer = query[0]
manufacturers[man_name] = manufacturer
m_parts = ManufacturerPart.list(inventree, MPN=mpn)
print("Existing Manufacturer Parts:")
for mp in m_parts:
print(f" - {mp.MPN}, {mp.manufacturer}")
if len(m_parts) == 0:
print(f"Creating new part: {man_name} -> {mpn}")
manufacturer_part = ManufacturerPart.create(inventree, data={
'part': res.pk,
'manufacturer': manufacturer.pk,
'MPN': mpn,
})
else:
manufacturer_part = m_parts[0]
# Check if a "supplier part" exists
s_parts = SupplierPart.list(
inventree,
manufacturer_part=manufacturer_part.pk,
supplier=DIGIKEY_PK
)
if s_parts is None or len(s_parts) == 0:
print(f"Creating new supplier part")
SupplierPart.create(inventree, data={
'part': res.pk,
'supplier': DIGIKEY_PK,
'manufacturer_part': manufacturer_part.pk,
'SKU': sku,
'link': product.product_url,
'description': product.product_description,
})

View File

@ -1,46 +0,0 @@
"""
This script adds supplier availability data to some SupplierPart objects
"""
from random import randint
from matplotlib.style import available
from progress.bar import Bar
from inventree.api import InvenTreeAPI
from inventree.company import SupplierPart
from inventree.part import Part
from inventree.stock import StockItem
from scipy import rand
api = InvenTreeAPI("http://localhost:8000", username="admin", password="inventree")
# ID for the "passives" category
passives_category_id = 4
parts = Part.list(api, category=passives_category_id, cascade=True)
bar = Bar('Updating Supplier Availability', max=len(parts))
for part in parts:
supplier_parts = SupplierPart.list(api, part=part.pk)
for sp in supplier_parts:
# Do not update every SupplierPart instance
if randint(0, 10) > 3:
continue
available = randint(500, 50000)
sp.save(
data={
'available': available
}
)
bar.next()
bar.finish()

View File

@ -1,127 +0,0 @@
"""
This script adds new supplier data and supplier pricing for the demo dataset.
The supplier part numbers here are not real, neither is the pricing.
None of this data should be used for anything in the realm of sensible decision making.
"""
import random
import string
from progress.bar import Bar
from inventree.api import InvenTreeAPI
from inventree.company import Company, SupplierPart, SupplierPriceBreak
from inventree.part import Part
api = InvenTreeAPI("http://localhost:8000", username="admin", password="inventree")
# ID for the "passives" category
passives_category_id = 4
# List of electronics suppliers we wish to create supplier parts for
supplier_ids = [
1, # DigiKey
2, # Mouser
3, # Arrow
39, # LCSC
40, # Newark
41, # Future Electronics
]
# Special currency (default = USD)
currencies = {
2: 'AUD', # Mouser
39: 'CNY', # LCSC
41: 'CAD', # Future
}
parts = Part.list(api, category=passives_category_id, cascade=True)
bar = Bar('Creating Supplier Part Data', max=len(parts))
for part in parts:
bar.next()
# Create at least one supplier part for each supplier
for supplier_id in supplier_ids:
supplier_parts = SupplierPart.list(
api,
part=part.pk,
supplier=supplier_id,
)
# Supplier part already exists for this supplier
if len(supplier_parts) > 0:
continue
supplier = Company(api, pk=supplier_id)
# Create a new supplier part for this supplier
SKU = supplier.name.upper()[0:3]
SKU += "-" + "".join(random.choice(string.digits) for _ in range(5))
SKU += "-"
SKU += "".join(random.choice(string.ascii_uppercase) for _ in range(3))
# Create a new supplier part based on randomly generated SKU
SupplierPart.create(
api,
{
"part": part.pk,
"supplier": supplier.pk,
"SKU": SKU,
}
)
# Now, ensure that each SupplierPart has some associated price break information
supplier_parts = SupplierPart.list(api, part=part.pk)
for sp in supplier_parts:
price_breaks = SupplierPriceBreak.list(api, part=sp.pk)
# Skip for any supplier pars which already have price-break information
if len(price_breaks) > 0:
continue
currency = currencies.get(sp.supplier, 'USD')
# Start with the highest price break for 1000x
pb_1000 = 0.0025 + random.random() * 0.025
pb_100 = pb_1000 * (10 + random.random() * 1.25)
pb_1 = pb_100 * (10 + random.random() * 2.5)
SupplierPriceBreak.create(
api,
{
"part": sp.pk,
"quantity": 1,
"price": round(pb_1, 4),
"price_currency": currency
}
)
SupplierPriceBreak.create(
api,
{
"part": sp.pk,
"quantity": 100,
"price": round(pb_100, 4),
"price_currency": currency
}
)
SupplierPriceBreak.create(
api,
{
"part": sp.pk,
"quantity": 1000,
"price": round(pb_1000, 4),
"price_currency": currency
}
)
bar.finish()

View File

@ -1,74 +0,0 @@
"""
This script finds stock items which are not associated with a SupplierPart, and:
- Adds a SupplierPart Reference
- Adds a PurchasePrice reference
"""
from random import randint
from progress.bar import Bar
from inventree.api import InvenTreeAPI
from inventree.company import SupplierPart, SupplierPriceBreak
from inventree.part import Part
from inventree.stock import StockItem
api = InvenTreeAPI("http://localhost:8000", username="admin", password="inventree")
# ID for the "passives" category
passives_category_id = 4
location = 11
parts = Part.list(api, category=passives_category_id, cascade=True)
bar = Bar('Updating Stock Records', max=len(parts))
for part in parts:
supplier_parts = SupplierPart.list(api, part=part.pk)
for sp in supplier_parts:
# Find any supplier parts without stock
stock_items = StockItem.list(api, part=part.pk, supplier_part=sp.pk)
# Ignore if there are existing stock items
if len(stock_items) > 0:
continue
quantity = randint(0, 100)
if quantity <= 25:
continue
price_breaks = SupplierPriceBreak.list(api, part=sp.pk)
pp = None
ppc = None
for pb in price_breaks:
if pb.quantity == 1:
pp = pb.price
ppc = pb.price_currency
# Create a new StockItem
StockItem.create(
api,
{
'part': part.pk,
'supplier_part': sp.pk,
'quantity': quantity,
'location': location,
'packaging': 'cut tape',
'purchase_price': pp,
'purchase_price_currency': ppc,
}
)
bar.next()
bar.finish()