In CreoMigrate (GUI-Applikation) können nun auch Teilenummern ohne Stückliste migriert werden. Hierfür wurde in Methode 'get_csv_files_of_asm' von 'controller.py' ein Aufruf der Methode 'extend_asm_bom' aus der Klasse 'SivasBOM' in 'manage_configs.py' ergänzt. Innerhalb der Methode wird die angegebene Teilenummer aus dem Eingabefeld in der GUI, d.h. die Hauptnummer in die Stücklistendaten aufgenommen - standardmäßig ist sie nicht enthalten. Als Oberbaugruppe dieser Nummer wird dabei die fiktive Baugruppe 'None' definiert. Durch diese Ergänzung in den Stücklistendaten wird eine Teilenummer ohne Stückliste also selbst zu einem Bestandteil der fiktiven Baugruppe 'None'. Somit wird also wie bisher nur mit Baugruppen gearbeitet, wodurch die Grundlogik zur Erstellung des Treeviews im Programm gleich bleibt. Lediglich die Vorgehensweise, wenn parent = 'None' gilt musste in den Treeview-Methoden angepasst werden. Im Zuge dessen wurde auch die Methode '_has_childs' der Treeview-Klasse in 'gui.py' angepasst, um sie effizienter zu machen. Konkret wird nun nicht mehr jedes mal durch das parent_children_mapping-dict gelooped werden, um herauszufinden, ob die angegebene Nummer enthalten ist. Da alle Nummern, die als Key in genanntem Dict vorliegen immer Kinder haben muss stattdessen nur geprüft werden, ob die Nummer als Key vorliegt.
This commit is contained in:
+14
-13
@@ -2,7 +2,7 @@ import os
|
||||
from tkinter import messagebox
|
||||
import update_database
|
||||
|
||||
from manage_configs import SivasBOM, RuleDesignerDatabaseConfig, MigrationStatus
|
||||
from manage_configs import SivasBOM, SivasTeilestamm, RuleDesignerDatabaseConfig, MigrationStatus
|
||||
|
||||
"""
|
||||
Contains the logic for the MVC of CreoMigrate Gui
|
||||
@@ -115,26 +115,27 @@ class Controller(Observer):
|
||||
orange[red] = True
|
||||
return orange
|
||||
|
||||
def get_csv_files_of_asm(self, asm_id, load_local_asm_json, load_local_rd_dbase):
|
||||
def get_csv_files_of_asm(self, asm_id, load_local_asm_json=False, load_local_rd_dbase=False):
|
||||
|
||||
""" Holt sich die Metadaten der Stücklistenpositionen als CSV"""
|
||||
data_dir = self.get_env("data")
|
||||
rd_dbase_filename = self.get_env("rd_dbase_filename")
|
||||
|
||||
asm_data = SivasBOM(data_dir, asm_id + '.json', load_local_asm_json)
|
||||
sivas_bom = SivasBOM(data_dir, asm_id + '.json', load_local_asm_json)
|
||||
sivas_bom.extend_asm_bom(asm_id, {"Parent": None, "Position": "10/0"}) # Ergänzt Stücklistendaten um eine fiktive Baugruppe "None", in der die Haupt-Teilenummer als Pos. 1 vorliegt. Dadurch können auch Teilenummern ohne Stückliste korrekt abgebildet werden
|
||||
|
||||
rd_data = RuleDesignerDatabaseConfig(data_dir, rd_dbase_filename, load_local_rd_dbase)
|
||||
migration_status = MigrationStatus(asm_data.child_ids, rd_data.ids)
|
||||
|
||||
if not load_local_asm_json:
|
||||
try:
|
||||
update_database.get_sivas_teilestamm(migration_status.ids_pending, data_dir)
|
||||
except:
|
||||
self.message_error('Abfrage hat nicht funktioniert', 'sivas_db_error')
|
||||
return
|
||||
migration_status = MigrationStatus(sivas_bom.child_ids, rd_data.ids)
|
||||
pending_ids = migration_status.ids_pending
|
||||
|
||||
self._model.set_red_ids(migration_status.ids_pending)
|
||||
self._model.set_parent_children(asm_data.parent_children)
|
||||
sivas_teilestamm = SivasTeilestamm(data_dir, asm_id + '.csv')
|
||||
sivas_teilestamm.create_csvs(pending_ids)
|
||||
|
||||
self._model.set_red_ids(pending_ids)
|
||||
self._model.set_parent_children(sivas_bom.parent_children)
|
||||
self._model.set_asm_id(asm_id)
|
||||
self._model.set_bom_properties(asm_data.all_bom_properties)
|
||||
self._model.set_bom_properties(sivas_bom.all_bom_properties)
|
||||
|
||||
def set_model(self, model):
|
||||
self._model = model
|
||||
|
||||
Reference in New Issue
Block a user