wip
This commit is contained in:
parent
3b55cde7e5
commit
2e7e1a015b
@ -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
|
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
|
,,,,,,,,,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
|
||||||
|
|||||||
|
@ -17,7 +17,7 @@ class Recipes(BaseModel):
|
|||||||
|
|
||||||
def get_steps(self):
|
def get_steps(self):
|
||||||
steps = []
|
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))
|
steps.append(Steps.get_by_id(step_pk))
|
||||||
return steps
|
return steps
|
||||||
|
|
||||||
|
|||||||
@ -2,8 +2,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Barcodes_Step_Editor(Editor):
|
class Barcodes_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
"serial": self.serial_le,
|
"serial": self.serial_le,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -2,8 +2,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Connector_Step_Editor(Editor):
|
class Connector_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
"connector": self.connector_le,
|
"connector": self.connector_le,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -39,7 +39,7 @@ def from_str(data, field=None):
|
|||||||
class Cell:
|
class Cell:
|
||||||
modified = pyqtSignal(bool)
|
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.readonly = readonly
|
||||||
self.autocomplete = autocomplete
|
self.autocomplete = autocomplete
|
||||||
self.field_name = field_name
|
self.field_name = field_name
|
||||||
@ -100,14 +100,14 @@ class Cell:
|
|||||||
return self.value
|
return self.value
|
||||||
return self.parse(*args, **kwargs)
|
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()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
class Line_Edit_Cell_Widget(QLineEdit, Cell):
|
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__()
|
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):
|
def set_readonly(self, readonly=True):
|
||||||
self.setReadOnly(readonly)
|
self.setReadOnly(readonly)
|
||||||
@ -119,14 +119,14 @@ class Line_Edit_Cell_Widget(QLineEdit, Cell):
|
|||||||
self.value = data
|
self.value = data
|
||||||
self.setText(to_str(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)
|
return from_str(self.text(), self.field)
|
||||||
|
|
||||||
|
|
||||||
class Combo_Box_Cell_Widget(QComboBox, Cell):
|
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__()
|
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):
|
def set_readonly(self, readonly=True):
|
||||||
self.setEditable(not readonly)
|
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):
|
def render(self, data, field_name=None, row_number=None, crud=None):
|
||||||
self.setCurrentText(to_str(data))
|
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)
|
return from_str(self.currentText(), self.field)
|
||||||
|
|
||||||
|
|
||||||
class External_Dialog_Cell_Widget(QPushButton, Cell):
|
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.dialog = QDialog()
|
||||||
self.editor = QPlainTextEdit()
|
self.editor = QPlainTextEdit()
|
||||||
self.dialog.setLayout(QGridLayout())
|
self.dialog.setLayout(QGridLayout())
|
||||||
@ -157,7 +157,7 @@ class External_Dialog_Cell_Widget(QPushButton, Cell):
|
|||||||
super().__init__(u"\u238B visualizza")
|
super().__init__(u"\u238B visualizza")
|
||||||
else:
|
else:
|
||||||
super().__init__(u"\u238B modifica")
|
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.dialog.setWindowTitle(self.field_alias)
|
||||||
self.clicked.connect(self.show_dialog)
|
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):
|
def render(self, data, field_name=None, row_number=None, crud=None):
|
||||||
self.editor.setPlainText(to_str(data))
|
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)
|
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):
|
def render(self, data, field_name=None, row_number=None, crud=None):
|
||||||
self.editor.setPlainText(json.dumps(data, indent="\t"))
|
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())
|
return json.loads(self.editor.toPlainText())
|
||||||
|
|
||||||
|
|
||||||
class Json_External_Dialog_Editor_Cell_Widget(QPushButton, Cell):
|
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):
|
if not issubclass(editor_widget_class, Editor):
|
||||||
raise AssertionError(f"editor_widget_class {editor_widget_class!r} must be a subclass of {Editor!r}")
|
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):
|
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")
|
super().__init__(u"\u238B visualizza")
|
||||||
else:
|
else:
|
||||||
super().__init__(u"\u238B modifica")
|
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 = Dialog()
|
||||||
self.dialog.setAttribute(Qt.WA_DeleteOnClose, on=False)
|
self.dialog.setAttribute(Qt.WA_DeleteOnClose, on=False)
|
||||||
self.dialog.setCentralWidget(self.editor)
|
self.dialog.setCentralWidget(self.editor)
|
||||||
self.dialog.setWindowTitle(self.field_alias)
|
self.dialog.setWindowTitle(self.field_alias)
|
||||||
self.clicked.connect(self.show_dialog)
|
self.clicked.connect(self.show_dialog)
|
||||||
if hasattr(self.editor, "init"):
|
if hasattr(self.editor, "init"):
|
||||||
self.editor.init()
|
self.editor.init(action=action)
|
||||||
|
|
||||||
def set_readonly(self, readonly=True):
|
def set_readonly(self, readonly=True):
|
||||||
self.editor.set_readonly(readonly=readonly)
|
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):
|
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)
|
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)
|
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():
|
for fn, cn in self.select_index.items():
|
||||||
w = self.db_tw.cellWidget(rn, cn)
|
w = self.db_tw.cellWidget(rn, cn)
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
self.log.exception(traceback.format_exc())
|
self.log.exception(traceback.format_exc())
|
||||||
self.set_row_color(rn, "red")
|
self.set_row_color(rn, "red")
|
||||||
@ -472,7 +477,7 @@ class Crud(Widget):
|
|||||||
r = self.row_upgrader(r, rn, self)
|
r = self.row_upgrader(r, rn, self)
|
||||||
for fn, cn in self.select_index.items():
|
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)
|
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.set_readonly(readonly=w.readonly)
|
||||||
w.do_autocomplete(w.autocomplete)
|
w.do_autocomplete(w.autocomplete)
|
||||||
w.modified.connect(self.set_modified)
|
w.modified.connect(self.set_modified)
|
||||||
@ -497,7 +502,7 @@ class Crud(Widget):
|
|||||||
self.db_tw.setRowCount(rn + 1)
|
self.db_tw.setRowCount(rn + 1)
|
||||||
for fn, cn in self.select_index.items():
|
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)
|
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.set_readonly(readonly=w.readonly)
|
||||||
w.do_autocomplete(w.autocomplete)
|
w.do_autocomplete(w.autocomplete)
|
||||||
w.modified.connect(self.set_modified)
|
w.modified.connect(self.set_modified)
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from ui.widget import Widget
|
|||||||
|
|
||||||
|
|
||||||
class Editor(Widget):
|
class Editor(Widget):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
if cell_widget is None:
|
if cell_widget is None:
|
||||||
self.cell_widget = None
|
self.cell_widget = None
|
||||||
@ -116,7 +116,7 @@ class Editor(Widget):
|
|||||||
# ignore default values
|
# ignore default values
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def parse(self, row_number=None, crud=None):
|
def parse(self, action=None, row_number=None, crud=None):
|
||||||
ret = {}
|
ret = {}
|
||||||
for k, w in self.spec.items():
|
for k, w in self.spec.items():
|
||||||
if isinstance(w, QCheckBox):
|
if isinstance(w, QCheckBox):
|
||||||
|
|||||||
@ -2,8 +2,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Leak_Step_Editor(Editor):
|
class Leak_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
# pre-filling
|
# pre-filling
|
||||||
"pre_filling_time": self.pre_filling_time_sb,
|
"pre_filling_time": self.pre_filling_time_sb,
|
||||||
|
|||||||
@ -2,8 +2,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Print_Step_Editor(Editor):
|
class Print_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
"template": self.label_template_cb,
|
"template": self.label_template_cb,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -159,6 +159,7 @@ class Recipe_Selection(Widget):
|
|||||||
"barcodes": {
|
"barcodes": {
|
||||||
"serial": row.get(barcode_serial_field, defaults["codice_a_barre"]),
|
"serial": row.get(barcode_serial_field, defaults["codice_a_barre"]),
|
||||||
},
|
},
|
||||||
|
"screwdriver": {},
|
||||||
"resistance": {
|
"resistance": {
|
||||||
"scale": float(row.get("scala_resistenza", defaults["scala_resistenza"])),
|
"scale": float(row.get("scala_resistenza", defaults["scala_resistenza"])),
|
||||||
"expected": float(row.get("resistenza_attesa", defaults["resistenza_attesa"])),
|
"expected": float(row.get("resistenza_attesa", defaults["resistenza_attesa"])),
|
||||||
@ -246,6 +247,7 @@ class Recipe_Selection(Widget):
|
|||||||
recipe.spec = {
|
recipe.spec = {
|
||||||
"connector": len(row.get("verifica_connettore_abilitata", defaults["verifica_connettore_abilitata"])) and "connector" not in self.unsupported_steps,
|
"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,
|
"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,
|
"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_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,
|
"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": {
|
"available_steps": {
|
||||||
"connector": steps["connector"].get_id(),
|
"connector": steps["connector"].get_id(),
|
||||||
"barcodes": steps["barcodes"].get_id(),
|
"barcodes": steps["barcodes"].get_id(),
|
||||||
|
"screwdriver": steps["screwdriver"].get_id(),
|
||||||
"resistance": steps["resistance"].get_id(),
|
"resistance": steps["resistance"].get_id(),
|
||||||
"leak_1": steps["leak_1"].get_id(),
|
"leak_1": steps["leak_1"].get_id(),
|
||||||
"leak_2": steps["leak_2"].get_id(),
|
"leak_2": steps["leak_2"].get_id(),
|
||||||
|
|||||||
@ -12,8 +12,8 @@ from ui.vision_step_editor import Vision_Step_Editor
|
|||||||
|
|
||||||
|
|
||||||
class Recipe_Spec_And_Step_Editor(Editor):
|
class Recipe_Spec_And_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None, unsupported_steps=None):
|
def __init__(self, action=None, cell_widget=None, unsupported_steps=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.map = {
|
self.map = {
|
||||||
"connector": {
|
"connector": {
|
||||||
"type": "connector",
|
"type": "connector",
|
||||||
@ -105,19 +105,24 @@ class Recipe_Spec_And_Step_Editor(Editor):
|
|||||||
if editor is not None:
|
if editor is not None:
|
||||||
editor.do_autocomplete(step_editors_autocomplete.get(step_name, None))
|
editor.do_autocomplete(step_editors_autocomplete.get(step_name, None))
|
||||||
|
|
||||||
def init(self):
|
def init(self, action=None):
|
||||||
self.get_steps()
|
self.get_steps()
|
||||||
|
if action == "add":
|
||||||
|
self.save_steps()
|
||||||
|
|
||||||
def connect_modified(self, check_modified):
|
def showing_dialog(self):
|
||||||
super().connect_modified(check_modified)
|
self.reset_steps()
|
||||||
for map in self.map.values():
|
|
||||||
editor = map.get("editor", None)
|
# def connect_modified(self, check_modified):
|
||||||
if editor is not None:
|
# super().connect_modified(check_modified)
|
||||||
editor.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):
|
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)
|
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()
|
self.get_steps()
|
||||||
steps = set(data.get("steps", set()))
|
steps = set(data.get("steps", set()))
|
||||||
for map in self.map.values():
|
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))
|
map["enable"].setChecked(step.name in steps and not map.get("hidden", False))
|
||||||
self.render_steps()
|
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 = super().parse(row_number=row_number, crud=crud)
|
||||||
ret["steps"] = []
|
ret["steps"] = []
|
||||||
ret["available_steps"] = {}
|
ret["available_steps"] = {}
|
||||||
|
|||||||
@ -3,8 +3,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Recipe_Spec_Editor(Editor):
|
class Recipe_Spec_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
"steps": self.steps_lw,
|
"steps": self.steps_lw,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -2,8 +2,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Resistance_Step_Editor(Editor):
|
class Resistance_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
"scale": self.scale_dsb,
|
"scale": self.scale_dsb,
|
||||||
"expected": self.expected_dsb,
|
"expected": self.expected_dsb,
|
||||||
|
|||||||
@ -2,8 +2,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Screwdriver_Step_Editor(Editor):
|
class Screwdriver_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
"connector": self.connector_le,
|
"connector": self.connector_le,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -10,7 +10,7 @@ from ui.widget import Widget
|
|||||||
|
|
||||||
|
|
||||||
class Step_Spec_JEDECW(QPushButton, Cell):
|
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 = {
|
self.editors = {
|
||||||
"vision": Vision_Step_Editor(cell_widget=self),
|
"vision": Vision_Step_Editor(cell_widget=self),
|
||||||
"leak": Leak_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 = Dialog()
|
||||||
self.dialog.setAttribute(Qt.WA_DeleteOnClose, on=False)
|
self.dialog.setAttribute(Qt.WA_DeleteOnClose, on=False)
|
||||||
super().__init__(u"\u238B modifica")
|
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.update_editor()
|
||||||
self.crud().modified.connect(self.update_editor)
|
self.crud().modified.connect(self.update_editor)
|
||||||
self.dialog.setWindowTitle(self.field_alias)
|
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):
|
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)
|
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)
|
return self.editor.parse(row_number=row_number, crud=crud)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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)),
|
"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),
|
"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)),
|
"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)),
|
"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)),
|
"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),
|
"wait": Test_Assembly(img_path=self.select_step_img("wait"), text=u"ATTENDERE - PAUSA INTER CICLO", widget=None),
|
||||||
|
|||||||
@ -11,8 +11,8 @@ class Users_Management(Widget):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
class Username_Line_Edit_Cell_Widget(Line_Edit_Cell_Widget):
|
class Username_Line_Edit_Cell_Widget(Line_Edit_Cell_Widget):
|
||||||
def parse(self, row_number=None, crud=None):
|
def parse(self, action=None, row_number=None, crud=None):
|
||||||
data = super().parse(row_number=row_number, crud=crud)
|
data = super().parse(action=action, row_number=row_number, crud=crud)
|
||||||
if data is not None and len(data):
|
if data is not None and len(data):
|
||||||
return data.upper()
|
return data.upper()
|
||||||
return None
|
return None
|
||||||
@ -29,7 +29,7 @@ class Users_Management(Widget):
|
|||||||
data = None
|
data = None
|
||||||
self.setText(data)
|
self.setText(data)
|
||||||
|
|
||||||
def parse(self, row_number=None, crud=None):
|
def parse(self, action=None, row_number=None, crud=None):
|
||||||
data = self.text()
|
data = self.text()
|
||||||
if data is not None and len(data):
|
if data is not None and len(data):
|
||||||
return [data, False] # mark as NOT hash
|
return [data, False] # mark as NOT hash
|
||||||
@ -39,7 +39,7 @@ class Users_Management(Widget):
|
|||||||
def render(self, data, row_number=None, crud=None):
|
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)
|
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())
|
return Users.parse_roles(self.text())
|
||||||
|
|
||||||
crud_aliases = {
|
crud_aliases = {
|
||||||
|
|||||||
@ -2,8 +2,8 @@ from ui.editor import Editor
|
|||||||
|
|
||||||
|
|
||||||
class Vision_Step_Editor(Editor):
|
class Vision_Step_Editor(Editor):
|
||||||
def __init__(self, cell_widget=None):
|
def __init__(self, action=None, cell_widget=None):
|
||||||
super().__init__(cell_widget=cell_widget)
|
super().__init__(action=action, cell_widget=cell_widget)
|
||||||
self.spec.update({
|
self.spec.update({
|
||||||
"recipe": self.vision_recipe_cb,
|
"recipe": self.vision_recipe_cb,
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user