Das Einladen der JSON- und RuleDesigner-Daten erfolgt nun allein i.V.m 'manage_configs.py' und nicht mehr i.V.m der Klasse FetchSivasTeilestamm in der Datei 'get_teilestamm.py'. Dies wurde einerseits durchgeführt, um die Anzahl an Referenzen zu verringern, hauptsächlich jedoch, weil in der Klasse 'FetchSivasTeilestamm' die Klasse 'MigrationsStatus' in 'manage_configs.py' aufgerufen wird, in der wiederum Objekte der Klassen 'SivasAssemblyData' und 'RuleDesignerConfig' initiiert werden. Das ist sehr ineffizient, weil 'SivasAssemblyData' bereits in dieser Datei, also 'controller.py' initiiert wird. Es wurde zudem ergänzt, dass nun auch die lokale Version der CSV-Datei, die die RD-Teilenummern enthält geladen werden kann, ohne den aktuellen Stand vom Server zu kopieren.
This commit is contained in:
+19
-30
@@ -2,8 +2,7 @@ import os
|
|||||||
from tkinter import messagebox
|
from tkinter import messagebox
|
||||||
import update_database
|
import update_database
|
||||||
|
|
||||||
from manage_configs import SivasAssemblyData
|
from manage_configs import SivasAssemblyData, RuleDesignerDatabaseConfig, MigrationStatus
|
||||||
from get_teilestamm import FetchSivasTeilestamm
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Contains the logic for the MVC of CreoMigrate Gui
|
Contains the logic for the MVC of CreoMigrate Gui
|
||||||
@@ -96,6 +95,8 @@ class Controller(Observer):
|
|||||||
ret = self._environment.cfg_dir
|
ret = self._environment.cfg_dir
|
||||||
elif env_path == "log":
|
elif env_path == "log":
|
||||||
ret = self._environment.log_dir
|
ret = self._environment.log_dir
|
||||||
|
elif env_path == "rd_dbase_filename":
|
||||||
|
ret = self._environment.ruledesigner_csv_filename
|
||||||
else:
|
else:
|
||||||
raise Exception("this path is not defined "+env_path)
|
raise Exception("this path is not defined "+env_path)
|
||||||
return ret
|
return ret
|
||||||
@@ -114,36 +115,26 @@ class Controller(Observer):
|
|||||||
orange[red] = True
|
orange[red] = True
|
||||||
return orange
|
return orange
|
||||||
|
|
||||||
def get_csv_files_of_asm(self, asmid, uselocal):
|
def get_csv_files_of_asm(self, asm_id, load_local_asm_json, load_local_rd_dbase):
|
||||||
""" sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen """
|
""" Holt sich die Metadaten der Stücklistenpositionen als CSV"""
|
||||||
data_dir = self.get_env("data")
|
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
|
asm_data = SivasAssemblyData(data_dir, asm_id + '.json', load_local_asm_json)
|
||||||
sivas_teilestamm.fetch_from_db(uselocal)
|
rd_data = RuleDesignerDatabaseConfig(data_dir, rd_dbase_filename, load_local_rd_dbase)
|
||||||
if not uselocal:
|
migration_status = MigrationStatus(asm_data.child_ids, rd_data.ids)
|
||||||
|
|
||||||
|
if not load_local_asm_json:
|
||||||
try:
|
try:
|
||||||
sivas_teilestamm.get_unmigrated_teilstamm_csvs()
|
update_database.get_sivas_teilestamm(migration_status.red_ids, data_dir)
|
||||||
except:
|
except:
|
||||||
self.message_error('Abfrage hat nicht funktioniert', 'sivas_db_error')
|
self.message_error('Abfrage hat nicht funktioniert', 'sivas_db_error')
|
||||||
return
|
return
|
||||||
|
|
||||||
redids = sivas_teilestamm.get_red_ids()
|
self._model.set_red_ids(migration_status.red_ids)
|
||||||
|
self._model.set_parent_children(asm_data.parent_children)
|
||||||
sad = SivasAssemblyData(data_dir, asmid + '.json')
|
self._model.set_asm_id(asm_id)
|
||||||
parent_children = sad.get_parent_children()
|
self._model.set_bom_properties(asm_data.all_bom_properties)
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
def set_model(self, model):
|
def set_model(self, model):
|
||||||
self._model = model
|
self._model = model
|
||||||
@@ -162,15 +153,13 @@ class Controller(Observer):
|
|||||||
|
|
||||||
def get_current_asm_id(self):
|
def get_current_asm_id(self):
|
||||||
self._model.get_asm_id()
|
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():
|
if not asm_id.isnumeric():
|
||||||
return
|
return
|
||||||
# TODO save current given data. In case, ask whether you should save or drop
|
# TODO save current given data. In case, ask whether you should save or drop
|
||||||
self._model.set_asm_id(asm_id)
|
self._model.set_asm_id(asm_id)
|
||||||
# hole alle Daten vom Server
|
# hole alle Daten vom Server
|
||||||
self.get_csv_files_of_asm(asm_id, loadlocal)
|
self.get_csv_files_of_asm(asm_id, load_local_asm_json, load_local_rd_dbase)
|
||||||
self.get_bom_properties(asm_id)
|
|
||||||
#self._load_cid_data2model(asm_id)
|
|
||||||
|
|
||||||
def set_current_item_id(self, cid):
|
def set_current_item_id(self, cid):
|
||||||
"""setze eine neue Item ID """
|
"""setze eine neue Item ID """
|
||||||
@@ -301,7 +290,7 @@ class Controller(Observer):
|
|||||||
elif key == 'cb_ladelokal_asm':
|
elif key == 'cb_ladelokal_asm':
|
||||||
current_asmid = self.data_from_view('asm_id')
|
current_asmid = self.data_from_view('asm_id')
|
||||||
# hole dir nur die lokalen Daten. Keine Datenbankabfrage
|
# 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':
|
elif key == 'cb_3dsuchen':
|
||||||
self.suche_3d()
|
self.suche_3d()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user