From 4f740e81ad174f744291799aed025c76226f732c Mon Sep 17 00:00:00 2001 From: Simon Steuer Date: Sun, 9 Mar 2025 00:37:10 +0100 Subject: [PATCH] =?UTF-8?q?Das=20Einladen=20der=20JSON-=20und=20RuleDesign?= =?UTF-8?q?er-Daten=20erfolgt=20nun=20allein=20i.V.m=20'manage=5Fconfigs.p?= =?UTF-8?q?y'=20und=20nicht=20mehr=20i.V.m=20der=20Klasse=20FetchSivasTeil?= =?UTF-8?q?estamm=20in=20der=20Datei=20'get=5Fteilestamm.py'.=20Dies=20wur?= =?UTF-8?q?de=20einerseits=20durchgef=C3=BChrt,=20um=20die=20Anzahl=20an?= =?UTF-8?q?=20Referenzen=20zu=20verringern,=20haupts=C3=A4chlich=20jedoch,?= =?UTF-8?q?=20weil=20in=20der=20Klasse=20'FetchSivasTeilestamm'=20die=20Kl?= =?UTF-8?q?asse=20'MigrationsStatus'=20in=20'manage=5Fconfigs.py'=20aufger?= =?UTF-8?q?ufen=20wird,=20in=20der=20wiederum=20Objekte=20der=20Klassen=20?= =?UTF-8?q?'SivasAssemblyData'=20und=20'RuleDesignerConfig'=20initiiert=20?= =?UTF-8?q?werden.=20Das=20ist=20sehr=20ineffizient,=20weil=20'SivasAssemb?= =?UTF-8?q?lyData'=20bereits=20in=20dieser=20Datei,=20also=20'controller.p?= =?UTF-8?q?y'=20initiiert=20wird.=20Es=20wurde=20zudem=20erg=C3=A4nzt,=20d?= =?UTF-8?q?ass=20nun=20auch=20die=20lokale=20Version=20der=20CSV-Datei,=20?= =?UTF-8?q?die=20die=20RD-Teilenummern=20enth=C3=A4lt=20geladen=20werden?= =?UTF-8?q?=20kann,=20ohne=20den=20aktuellen=20Stand=20vom=20Server=20zu?= =?UTF-8?q?=20kopieren.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/controller.py | 49 ++++++++++++++++++----------------------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/lib/controller.py b/lib/controller.py index 8599a76..c8b61fe 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -2,8 +2,7 @@ import os from tkinter import messagebox import update_database -from manage_configs import SivasAssemblyData -from get_teilestamm import FetchSivasTeilestamm +from manage_configs import SivasAssemblyData, RuleDesignerDatabaseConfig, MigrationStatus """ Contains the logic for the MVC of CreoMigrate Gui @@ -96,6 +95,8 @@ class Controller(Observer): ret = self._environment.cfg_dir elif env_path == "log": ret = self._environment.log_dir + elif env_path == "rd_dbase_filename": + ret = self._environment.ruledesigner_csv_filename else: raise Exception("this path is not defined "+env_path) return ret @@ -114,36 +115,26 @@ class Controller(Observer): orange[red] = True return orange - def get_csv_files_of_asm(self, asmid, uselocal): - """ sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen """ + def get_csv_files_of_asm(self, asm_id, load_local_asm_json, load_local_rd_dbase): + """ Holt sich die Metadaten der Stücklistenpositionen als CSV""" data_dir = self.get_env("data") - sivas_teilestamm = FetchSivasTeilestamm(asmid, data_dir) + rd_dbase_filename = self.get_env("rd_dbase_filename") - # falls uselocal True, dann keine Serverabfrage, sondern mit den lokalen Daten arbeiten - sivas_teilestamm.fetch_from_db(uselocal) - if not uselocal: + asm_data = SivasAssemblyData(data_dir, asm_id + '.json', load_local_asm_json) + 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: - sivas_teilestamm.get_unmigrated_teilstamm_csvs() + update_database.get_sivas_teilestamm(migration_status.red_ids, data_dir) except: self.message_error('Abfrage hat nicht funktioniert', 'sivas_db_error') return - redids = sivas_teilestamm.get_red_ids() - - sad = SivasAssemblyData(data_dir, asmid + '.json') - parent_children = sad.get_parent_children() - - self._model.set_red_ids(redids) - self._model.set_parent_children(parent_children) - self._model.set_asm_id(asmid) - - def get_bom_properties(self, asmid): - """ Holt sich aus Stückliste alle Eigenschaften der Stücklistenpositionen (z.B. Bezeichnung)""" - data_dir = self.get_env("data") - assembly_data = SivasAssemblyData(data_dir, asmid + '.json') - - bom_properties = assembly_data.get_all_bom_properties() - self._model.set_bom_properties(bom_properties) + self._model.set_red_ids(migration_status.red_ids) + self._model.set_parent_children(asm_data.parent_children) + self._model.set_asm_id(asm_id) + self._model.set_bom_properties(asm_data.all_bom_properties) def set_model(self, model): self._model = model @@ -162,15 +153,13 @@ class Controller(Observer): def get_current_asm_id(self): self._model.get_asm_id() - def set_current_asm_id(self, asm_id, loadlocal=False): + def set_current_asm_id(self, asm_id, load_local_asm_json=False, load_local_rd_dbase=False): if not asm_id.isnumeric(): return # TODO save current given data. In case, ask whether you should save or drop self._model.set_asm_id(asm_id) # hole alle Daten vom Server - self.get_csv_files_of_asm(asm_id, loadlocal) - self.get_bom_properties(asm_id) - #self._load_cid_data2model(asm_id) + self.get_csv_files_of_asm(asm_id, load_local_asm_json, load_local_rd_dbase) def set_current_item_id(self, cid): """setze eine neue Item ID """ @@ -301,7 +290,7 @@ class Controller(Observer): elif key == 'cb_ladelokal_asm': current_asmid = self.data_from_view('asm_id') # hole dir nur die lokalen Daten. Keine Datenbankabfrage - self.set_current_asm_id(current_asmid, True) + self.set_current_asm_id(current_asmid, load_local_asm_json=True, load_local_rd_dbase=True) elif key == 'cb_3dsuchen': self.suche_3d()