aboutsummaryrefslogtreecommitdiff
path: root/src/ee/part/pn_part_search_list.py
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-04-09 06:03:33 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2019-04-13 05:58:28 +0200
commita00dcfc7f6d12442fca8c5b7d43f12b707f0c877 (patch)
tree537fe862e4a8946a1346e87f97ac77772db56e17 /src/ee/part/pn_part_search_list.py
parent0232e0f992c3a03fe163b437cc1c1d631c8ddb83 (diff)
downloadee-python-a00dcfc7f6d12442fca8c5b7d43f12b707f0c877.tar.gz
ee-python-a00dcfc7f6d12442fca8c5b7d43f12b707f0c877.tar.bz2
ee-python-a00dcfc7f6d12442fca8c5b7d43f12b707f0c877.tar.xz
ee-python-a00dcfc7f6d12442fca8c5b7d43f12b707f0c877.zip
o Renaming part-create-distributor-search-list to pn-part-search-list.
Making the search more narrow, it is only responsible to find parts based on MPN or SPN.
Diffstat (limited to 'src/ee/part/pn_part_search_list.py')
-rw-r--r--src/ee/part/pn_part_search_list.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/ee/part/pn_part_search_list.py b/src/ee/part/pn_part_search_list.py
new file mode 100644
index 0000000..049d0b8
--- /dev/null
+++ b/src/ee/part/pn_part_search_list.py
@@ -0,0 +1,44 @@
+from pathlib import Path
+
+from ee.part import PartDb, load_db, save_db, Part, fact_keys
+from ee.xml import types
+
+__all__ = ["pn_part_search_list"]
+
+ignored_part_classes = [
+ "mechanical"
+]
+
+
+def pn_part_search_list(in_path: Path, out_path: Path, supplier: str):
+ in_parts = load_db(in_path)
+ out_parts = PartDb()
+
+ # print("loaded {} existing parts".format(in_parts.size()))
+
+ for xml in in_parts.iterparts():
+ part = Part(xml)
+ pn_value = next((p.valueProp for p in part.get_mpns()), None)
+
+ part_class = part.find_fact(fact_keys.part_class)
+ if part_class:
+ if part_class.valueProp in ignored_part_classes:
+ continue
+
+ if pn_value is None:
+ refs = [ref.referenceProp for ref in part.get_schematic_references()]
+ print("Skipping part with no part number: schematic reference: {}".format(", ".join(refs)))
+ continue
+
+ entry = out_parts.find_by_pn(pn_value)
+
+ if entry is not None:
+ continue
+
+ new_part = types.Part()
+ new_part.referencesProp = xml.referencesProp
+
+ out_parts.add_entry(new_part, True)
+
+ # print("Saving {} work parts".format(out_parts.size()))
+ save_db(out_path, out_parts)