From 2e7e1a015b26e7ff9cc1ba395e4235323fc8a127 Mon Sep 17 00:00:00 2001 From: matteo porta Date: Tue, 27 Sep 2022 14:09:43 +0200 Subject: [PATCH] wip --- config/machine_settings/recipes_defaults.csv | 4 +- src/lib/db/models/recipes.py | 2 +- .../barcodes_step_editor.py | 4 +- .../connector_step_editor.py | 4 +- src/ui/crud/crud.py | 45 ++++++++++--------- src/ui/editor/editor.py | 4 +- src/ui/leak_step_editor/leak_step_editor.py | 4 +- src/ui/print_step_editor/print_step_editor.py | 4 +- src/ui/recipe_selection/recipe_selection.py | 3 ++ .../recipe_spec_and_step_editor.py | 29 +++++++----- .../recipe_spec_editor/recipe_spec_editor.py | 4 +- .../resistance_step_editor.py | 4 +- .../screwdriver_step_editor.py | 4 +- src/ui/steps_management/steps_management.py | 6 +-- src/ui/test/test.py | 1 + src/ui/users_management/users_management.py | 8 ++-- .../vision_step_editor/vision_step_editor.py | 4 +- 17 files changed, 75 insertions(+), 59 deletions(-) diff --git a/config/machine_settings/recipes_defaults.csv b/config/machine_settings/recipes_defaults.csv index 2263be5..450fea0 100644 --- a/config/machine_settings/recipes_defaults.csv +++ b/config/machine_settings/recipes_defaults.csv @@ -1,2 +1,2 @@ -codice_ricetta,cliente,part_number,verifica_connettore_abilitata,connettore,verifica_codice_a_barre_abilitata,codice_a_barre,verifica_resistenza_connettore_abilitata,scala_resistenza,resistenza_attesa,tolleranza_resistenza,prova_tenuta_abilitata,tempo_pre_riempimento,pressione_pre_riempimento,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotmento,prova_tenuta_abilitata_2,tempo_pre_riempimento_2,pressione_pre_riempimento_2,tempo_riempimento_2,tempo_assestamento_2,percentuale_minima_pressione_assestamento_2,percentuale_massima_pressione_assestamento_2,tempo_di_test_2,pressione_di_test_delta_minimo_2,pressione_di_test_2,pressione_di_test_delta_massimo_2,tempo_svuotamento_2,pressione_svuotmento_2,test_visione_abilitato,ricetta_visione,stampa_etichetta_abilitata,modello_etichetta -,,,,,,,,500,1000000000,20,x,0,1000,5,5,5,5,5,200,1000,200,1,100,,0,1000,5,5,5,5,5,200,1000,200,1,100,,termorestringente_923578.ini,x,EtichettaR5.prn +codice_ricetta,cliente,part_number,verifica_connettore_abilitata,connettore,verifica_codice_a_barre_abilitata,codice_a_barre,step_avvitatore_connettore_abilitata,verifica_resistenza_connettore_abilitata,scala_resistenza,resistenza_attesa,tolleranza_resistenza,prova_tenuta_abilitata,tempo_pre_riempimento,pressione_pre_riempimento,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotmento,prova_tenuta_abilitata_2,tempo_pre_riempimento_2,pressione_pre_riempimento_2,tempo_riempimento_2,tempo_assestamento_2,percentuale_minima_pressione_assestamento_2,percentuale_massima_pressione_assestamento_2,tempo_di_test_2,pressione_di_test_delta_minimo_2,pressione_di_test_2,pressione_di_test_delta_massimo_2,tempo_svuotamento_2,pressione_svuotmento_2,test_visione_abilitato,ricetta_visione,stampa_etichetta_abilitata,modello_etichetta +,,,,,,,,,500,1000000000,20,x,0,1000,5,5,5,5,5,200,1000,200,1,100,,0,1000,5,5,5,5,5,200,1000,200,1,100,,termorestringente_923578.ini,x,EtichettaR5.prn diff --git a/src/lib/db/models/recipes.py b/src/lib/db/models/recipes.py index c1ff185..2e0c60b 100644 --- a/src/lib/db/models/recipes.py +++ b/src/lib/db/models/recipes.py @@ -17,7 +17,7 @@ class Recipes(BaseModel): def get_steps(self): steps = [] - for step_pk in self.spec.get("available_steps", {}).values(): + for step_pk in self.spec.get("steps", []): steps.append(Steps.get_by_id(step_pk)) return steps diff --git a/src/ui/barcodes_step_editor/barcodes_step_editor.py b/src/ui/barcodes_step_editor/barcodes_step_editor.py index d4b35ea..4663dd5 100644 --- a/src/ui/barcodes_step_editor/barcodes_step_editor.py +++ b/src/ui/barcodes_step_editor/barcodes_step_editor.py @@ -2,8 +2,8 @@ from ui.editor import Editor class Barcodes_Step_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "serial": self.serial_le, }) diff --git a/src/ui/connector_step_editor/connector_step_editor.py b/src/ui/connector_step_editor/connector_step_editor.py index 227dcab..a48c9b6 100644 --- a/src/ui/connector_step_editor/connector_step_editor.py +++ b/src/ui/connector_step_editor/connector_step_editor.py @@ -2,8 +2,8 @@ from ui.editor import Editor class Connector_Step_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "connector": self.connector_le, }) diff --git a/src/ui/crud/crud.py b/src/ui/crud/crud.py index a575075..83ee0bc 100755 --- a/src/ui/crud/crud.py +++ b/src/ui/crud/crud.py @@ -39,7 +39,7 @@ def from_str(data, field=None): class Cell: modified = pyqtSignal(bool) - def __init__(self, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): + def __init__(self, action=None, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): self.readonly = readonly self.autocomplete = autocomplete self.field_name = field_name @@ -100,14 +100,14 @@ class Cell: return self.value return self.parse(*args, **kwargs) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): raise NotImplementedError() class Line_Edit_Cell_Widget(QLineEdit, Cell): - def __init__(self, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): + def __init__(self, action=None, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): super().__init__() - Cell.__init__(self, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) + Cell.__init__(self, action=action, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) def set_readonly(self, readonly=True): self.setReadOnly(readonly) @@ -119,14 +119,14 @@ class Line_Edit_Cell_Widget(QLineEdit, Cell): self.value = data self.setText(to_str(data)) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): return from_str(self.text(), self.field) class Combo_Box_Cell_Widget(QComboBox, Cell): - def __init__(self, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): + def __init__(self, action=None, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): super().__init__() - Cell.__init__(self, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) + Cell.__init__(self, action=action, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) def set_readonly(self, readonly=True): self.setEditable(not readonly) @@ -141,12 +141,12 @@ class Combo_Box_Cell_Widget(QComboBox, Cell): def render(self, data, field_name=None, row_number=None, crud=None): self.setCurrentText(to_str(data)) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): return from_str(self.currentText(), self.field) class External_Dialog_Cell_Widget(QPushButton, Cell): - def __init__(self, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): + def __init__(self, action=None, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): self.dialog = QDialog() self.editor = QPlainTextEdit() self.dialog.setLayout(QGridLayout()) @@ -157,7 +157,7 @@ class External_Dialog_Cell_Widget(QPushButton, Cell): super().__init__(u"\u238B visualizza") else: super().__init__(u"\u238B modifica") - Cell.__init__(self, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) + Cell.__init__(self, action=action, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) self.dialog.setWindowTitle(self.field_alias) self.clicked.connect(self.show_dialog) @@ -173,7 +173,7 @@ class External_Dialog_Cell_Widget(QPushButton, Cell): def render(self, data, field_name=None, row_number=None, crud=None): self.editor.setPlainText(to_str(data)) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): return from_str(self.editor.toPlainText(), self.field) @@ -181,27 +181,27 @@ class Json_External_Dialog_Cell_Widget(External_Dialog_Cell_Widget): def render(self, data, field_name=None, row_number=None, crud=None): self.editor.setPlainText(json.dumps(data, indent="\t")) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): return json.loads(self.editor.toPlainText()) class Json_External_Dialog_Editor_Cell_Widget(QPushButton, Cell): - def __init__(self, editor_widget_class, *args, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None, **kwargs): + def __init__(self, editor_widget_class, *args, action=None, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None, **kwargs): if not issubclass(editor_widget_class, Editor): raise AssertionError(f"editor_widget_class {editor_widget_class!r} must be a subclass of {Editor!r}") - self.editor = editor_widget_class(*args, cell_widget=weakref.ref(self), **kwargs) + self.editor = editor_widget_class(*args, action=action, cell_widget=weakref.ref(self), **kwargs) if crud() is None or crud().readonly is True or (crud().readonly is list and field_name in crud().readonly): super().__init__(u"\u238B visualizza") else: super().__init__(u"\u238B modifica") - Cell.__init__(self, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) + Cell.__init__(self, action=action, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) self.dialog = Dialog() self.dialog.setAttribute(Qt.WA_DeleteOnClose, on=False) self.dialog.setCentralWidget(self.editor) self.dialog.setWindowTitle(self.field_alias) self.clicked.connect(self.show_dialog) if hasattr(self.editor, "init"): - self.editor.init() + self.editor.init(action=action) def set_readonly(self, readonly=True): self.editor.set_readonly(readonly=readonly) @@ -220,7 +220,12 @@ class Json_External_Dialog_Editor_Cell_Widget(QPushButton, Cell): def render(self, data, field_name=None, row_number=None, crud=None): self.editor.render(data, field_name=field_name, row_number=row_number, crud=crud) - def parse(self, row_number=None, crud=None): + # def _parse(self, action=None, row_number=None, crud=None): + # if action != "commit" and self.connected_modified and not self.is_modified: + # return self.value + # return self.editor.parse(action=action, row_number=row_number, crud=crud) + + def parse(self, action=None, row_number=None, crud=None): return self.editor.parse(row_number=row_number, crud=crud) @@ -380,7 +385,7 @@ class Crud(Widget): for fn, cn in self.select_index.items(): w = self.db_tw.cellWidget(rn, cn) try: - r[fn] = w._parse(row_number=rn, crud=weakref.ref(self)) + r[fn] = w._parse(action="commit", row_number=rn, crud=weakref.ref(self)) except Exception as e: self.log.exception(traceback.format_exc()) self.set_row_color(rn, "red") @@ -472,7 +477,7 @@ class Crud(Widget): r = self.row_upgrader(r, rn, self) for fn, cn in self.select_index.items(): readonly = self.readonly is None or self.readonly is True or (self.readonly is not False and fn in self.readonly) - w = self.widget_classes.get(fn, self.default_widget_class)(readonly=readonly, autocomplete=self.autocomplete.get(fn, None), field_name=fn, field_alias=self.fields_aliases[fn], field=self.db.table_model._meta.fields.get(fn, None), row_number=rn, crud=weakref.ref(self)) + w = self.widget_classes.get(fn, self.default_widget_class)(action="refresh", readonly=readonly, autocomplete=self.autocomplete.get(fn, None), field_name=fn, field_alias=self.fields_aliases[fn], field=self.db.table_model._meta.fields.get(fn, None), row_number=rn, crud=weakref.ref(self)) w.set_readonly(readonly=w.readonly) w.do_autocomplete(w.autocomplete) w.modified.connect(self.set_modified) @@ -497,7 +502,7 @@ class Crud(Widget): self.db_tw.setRowCount(rn + 1) for fn, cn in self.select_index.items(): readonly = self.readonly is None or self.readonly is True or (self.readonly is not False and fn in self.readonly) - w = self.widget_classes.get(fn, self.default_widget_class)(readonly=readonly, autocomplete=self.autocomplete.get(fn, None), field_name=fn, field_alias=self.fields_aliases[fn], field=self.db.table_model._meta.fields.get(fn, None), row_number=rn, crud=weakref.ref(self)) + w = self.widget_classes.get(fn, self.default_widget_class)(action="add", readonly=readonly, autocomplete=self.autocomplete.get(fn, None), field_name=fn, field_alias=self.fields_aliases[fn], field=self.db.table_model._meta.fields.get(fn, None), row_number=rn, crud=weakref.ref(self)) w.set_readonly(readonly=w.readonly) w.do_autocomplete(w.autocomplete) w.modified.connect(self.set_modified) diff --git a/src/ui/editor/editor.py b/src/ui/editor/editor.py index af45668..0b01456 100644 --- a/src/ui/editor/editor.py +++ b/src/ui/editor/editor.py @@ -8,7 +8,7 @@ from ui.widget import Widget class Editor(Widget): - def __init__(self, cell_widget=None): + def __init__(self, action=None, cell_widget=None): super().__init__() if cell_widget is None: self.cell_widget = None @@ -116,7 +116,7 @@ class Editor(Widget): # ignore default values pass - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): ret = {} for k, w in self.spec.items(): if isinstance(w, QCheckBox): diff --git a/src/ui/leak_step_editor/leak_step_editor.py b/src/ui/leak_step_editor/leak_step_editor.py index 0ae64d5..dbb7c4f 100644 --- a/src/ui/leak_step_editor/leak_step_editor.py +++ b/src/ui/leak_step_editor/leak_step_editor.py @@ -2,8 +2,8 @@ from ui.editor import Editor class Leak_Step_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ # pre-filling "pre_filling_time": self.pre_filling_time_sb, diff --git a/src/ui/print_step_editor/print_step_editor.py b/src/ui/print_step_editor/print_step_editor.py index 28998f3..7e8e3d7 100644 --- a/src/ui/print_step_editor/print_step_editor.py +++ b/src/ui/print_step_editor/print_step_editor.py @@ -2,8 +2,8 @@ from ui.editor import Editor class Print_Step_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "template": self.label_template_cb, }) diff --git a/src/ui/recipe_selection/recipe_selection.py b/src/ui/recipe_selection/recipe_selection.py index 871f5f5..94aac4f 100755 --- a/src/ui/recipe_selection/recipe_selection.py +++ b/src/ui/recipe_selection/recipe_selection.py @@ -159,6 +159,7 @@ class Recipe_Selection(Widget): "barcodes": { "serial": row.get(barcode_serial_field, defaults["codice_a_barre"]), }, + "screwdriver": {}, "resistance": { "scale": float(row.get("scala_resistenza", defaults["scala_resistenza"])), "expected": float(row.get("resistenza_attesa", defaults["resistenza_attesa"])), @@ -246,6 +247,7 @@ class Recipe_Selection(Widget): recipe.spec = { "connector": len(row.get("verifica_connettore_abilitata", defaults["verifica_connettore_abilitata"])) and "connector" not in self.unsupported_steps, "barcodes": len(row.get(barcode_enale_field, defaults["verifica_codice_a_barre_abilitata"])) and "barcodes" not in self.unsupported_steps, + "screwdriver": len(row.get("step_avvitatore_connettore_abilitata", defaults["step_avvitatore_connettore_abilitata"])) and "screwdriver" not in self.unsupported_steps, "resistance": len(row.get("verifica_resistenza_connettore_abilitata", defaults["verifica_resistenza_connettore_abilitata"])) and "resistance" not in self.unsupported_steps, "leak_1": len(row.get("prova_tenuta_abilitata", defaults["prova_tenuta_abilitata"])) and "leak" not in self.unsupported_steps, "leak_2": len(row.get("prova_tenuta_abilitata_2", defaults["prova_tenuta_abilitata_2"])) and "leak" not in self.unsupported_steps, @@ -255,6 +257,7 @@ class Recipe_Selection(Widget): "available_steps": { "connector": steps["connector"].get_id(), "barcodes": steps["barcodes"].get_id(), + "screwdriver": steps["screwdriver"].get_id(), "resistance": steps["resistance"].get_id(), "leak_1": steps["leak_1"].get_id(), "leak_2": steps["leak_2"].get_id(), diff --git a/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py b/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py index 518eab6..e41e3b3 100644 --- a/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py +++ b/src/ui/recipe_spec_and_step_editor/recipe_spec_and_step_editor.py @@ -12,8 +12,8 @@ from ui.vision_step_editor import Vision_Step_Editor class Recipe_Spec_And_Step_Editor(Editor): - def __init__(self, cell_widget=None, unsupported_steps=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None, unsupported_steps=None): + super().__init__(action=action, cell_widget=cell_widget) self.map = { "connector": { "type": "connector", @@ -105,19 +105,24 @@ class Recipe_Spec_And_Step_Editor(Editor): if editor is not None: editor.do_autocomplete(step_editors_autocomplete.get(step_name, None)) - def init(self): + def init(self, action=None): self.get_steps() + if action == "add": + self.save_steps() - def connect_modified(self, check_modified): - super().connect_modified(check_modified) - for map in self.map.values(): - editor = map.get("editor", None) - if editor is not None: - editor.connect_modified(check_modified) + def showing_dialog(self): + self.reset_steps() + + # def connect_modified(self, check_modified): + # super().connect_modified(check_modified) + # for map in self.map.values(): + # editor = map.get("editor", None) + # if editor is not None: + # editor.connect_modified(check_modified) def render(self, data, field_name=None, row_number=None, crud=None): super().render(data, field_name=field_name, row_number=row_number, crud=crud) - self.available_steps = data.get("available_steps", {}) + self.available_steps = data.get("available_steps", None) self.get_steps() steps = set(data.get("steps", set())) for map in self.map.values(): @@ -126,7 +131,9 @@ class Recipe_Spec_And_Step_Editor(Editor): map["enable"].setChecked(step.name in steps and not map.get("hidden", False)) self.render_steps() - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): + # if action == "commit": + # self.save_steps() ret = super().parse(row_number=row_number, crud=crud) ret["steps"] = [] ret["available_steps"] = {} diff --git a/src/ui/recipe_spec_editor/recipe_spec_editor.py b/src/ui/recipe_spec_editor/recipe_spec_editor.py index 6a14dad..e10d955 100644 --- a/src/ui/recipe_spec_editor/recipe_spec_editor.py +++ b/src/ui/recipe_spec_editor/recipe_spec_editor.py @@ -3,8 +3,8 @@ from ui.editor import Editor class Recipe_Spec_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "steps": self.steps_lw, }) diff --git a/src/ui/resistance_step_editor/resistance_step_editor.py b/src/ui/resistance_step_editor/resistance_step_editor.py index c910101..3f6bc60 100644 --- a/src/ui/resistance_step_editor/resistance_step_editor.py +++ b/src/ui/resistance_step_editor/resistance_step_editor.py @@ -2,8 +2,8 @@ from ui.editor import Editor class Resistance_Step_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "scale": self.scale_dsb, "expected": self.expected_dsb, diff --git a/src/ui/screwdriver_step_editor/screwdriver_step_editor.py b/src/ui/screwdriver_step_editor/screwdriver_step_editor.py index 6351f4d..5a59233 100644 --- a/src/ui/screwdriver_step_editor/screwdriver_step_editor.py +++ b/src/ui/screwdriver_step_editor/screwdriver_step_editor.py @@ -2,8 +2,8 @@ from ui.editor import Editor class Screwdriver_Step_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "connector": self.connector_le, }) diff --git a/src/ui/steps_management/steps_management.py b/src/ui/steps_management/steps_management.py index d24adcb..480feb9 100644 --- a/src/ui/steps_management/steps_management.py +++ b/src/ui/steps_management/steps_management.py @@ -10,7 +10,7 @@ from ui.widget import Widget class Step_Spec_JEDECW(QPushButton, Cell): - def __init__(self, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): + def __init__(self, action=None, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None): self.editors = { "vision": Vision_Step_Editor(cell_widget=self), "leak": Leak_Step_Editor(cell_widget=self), @@ -20,7 +20,7 @@ class Step_Spec_JEDECW(QPushButton, Cell): self.dialog = Dialog() self.dialog.setAttribute(Qt.WA_DeleteOnClose, on=False) super().__init__(u"\u238B modifica") - Cell.__init__(self, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) + Cell.__init__(self, action=action, readonly=readonly, autocomplete=autocomplete, field_name=field_name, field_alias=field_alias, field=field, row_number=row_number, crud=crud) self.update_editor() self.crud().modified.connect(self.update_editor) self.dialog.setWindowTitle(self.field_alias) @@ -51,7 +51,7 @@ class Step_Spec_JEDECW(QPushButton, Cell): def render(self, data, field_name=None, row_number=None, crud=None): self.editor.render(data, field_name=field_name, row_number=row_number, crud=crud) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): return self.editor.parse(row_number=row_number, crud=crud) diff --git a/src/ui/test/test.py b/src/ui/test/test.py index 34df05a..851fa83 100755 --- a/src/ui/test/test.py +++ b/src/ui/test/test.py @@ -68,6 +68,7 @@ class Test(Widget): "leak": Test_Assembly(img_path=None, text=None, widget=Test_Leak(components=self.components, recipe=self.recipe, step=self.step)), "print": Test_Assembly(img_path=self.select_step_img("print"), text=u"STAMPA ETICHETTA IN CORSO", widget=None), "resistance": Test_Assembly(img_path=None, text=u"COLLEGARE CONNETTORE ELETTRICO PER EFFETTUARE PROVA RESISTENZA", widget=Test_Resistance(components=self.components, recipe=self.recipe, step=self.step)), + "screwdriver": Test_Assembly(img_path=self.select_step_img("fail"), text=u"STEP SCREWDRIVER NON SUPPORTATO", widget=None), "select_recipe": Test_Assembly(img_path=None, text=u"SELEZIONARE IL CODICE DA COLLAUDARE", widget=Recipe_Selection(config=self.config, unsupported_steps=self.unsupported_steps)), "vision": Test_Assembly(img_path=None, text=u"VERIFICARE CONTROLLO CON TELECAMERA", widget=Test_Vision(components=self.components, recipe=self.recipe, step=self.step)), "wait": Test_Assembly(img_path=self.select_step_img("wait"), text=u"ATTENDERE - PAUSA INTER CICLO", widget=None), diff --git a/src/ui/users_management/users_management.py b/src/ui/users_management/users_management.py index 72fb39b..e0102b8 100644 --- a/src/ui/users_management/users_management.py +++ b/src/ui/users_management/users_management.py @@ -11,8 +11,8 @@ class Users_Management(Widget): super().__init__() class Username_Line_Edit_Cell_Widget(Line_Edit_Cell_Widget): - def parse(self, row_number=None, crud=None): - data = super().parse(row_number=row_number, crud=crud) + def parse(self, action=None, row_number=None, crud=None): + data = super().parse(action=action, row_number=row_number, crud=crud) if data is not None and len(data): return data.upper() return None @@ -29,7 +29,7 @@ class Users_Management(Widget): data = None self.setText(data) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): data = self.text() if data is not None and len(data): return [data, False] # mark as NOT hash @@ -39,7 +39,7 @@ class Users_Management(Widget): def render(self, data, row_number=None, crud=None): super().render(", ".join(data) if data is not None else None, row_number=row_number, crud=crud) - def parse(self, row_number=None, crud=None): + def parse(self, action=None, row_number=None, crud=None): return Users.parse_roles(self.text()) crud_aliases = { diff --git a/src/ui/vision_step_editor/vision_step_editor.py b/src/ui/vision_step_editor/vision_step_editor.py index 5dbaf32..645a803 100644 --- a/src/ui/vision_step_editor/vision_step_editor.py +++ b/src/ui/vision_step_editor/vision_step_editor.py @@ -2,8 +2,8 @@ from ui.editor import Editor class Vision_Step_Editor(Editor): - def __init__(self, cell_widget=None): - super().__init__(cell_widget=cell_widget) + def __init__(self, action=None, cell_widget=None): + super().__init__(action=action, cell_widget=cell_widget) self.spec.update({ "recipe": self.vision_recipe_cb, })