diff --git a/TODO.txt b/TODO.txt deleted file mode 100644 index 187c511..0000000 --- a/TODO.txt +++ /dev/null @@ -1,4 +0,0 @@ -? Controllo elettrovalvole di selezione alta/bassa pressione tramite I/O digitali - -Ciclo di lavoro ordinario: -Salvataggio dati dei test su portale di tracciabilità www.r5portal.it sia OK che scarti diff --git a/src/components/tecna_marposs_provaset_t3.py b/src/components/tecna_marposs_provaset_t3.py index bb8276e..f7a5d7f 100644 --- a/src/components/tecna_marposs_provaset_t3.py +++ b/src/components/tecna_marposs_provaset_t3.py @@ -303,7 +303,7 @@ class TecnaMarpossProvasetT3(ModbusComponent): # **{769 - 1 + i: (recipe_name[i * 2 + 1] << 8) + recipe_name[i * 2] for i in range(8)}, # print field 2 "Print options": 0b0000000000000000 | self.saver_label_count << 12 | self.saver_print_on_fail << 8 | self.saver_label_template, "Test type": "Leak Test", - "Test flags": 0b0110000001011100, + "Test flags": 0b0110000001011100 if step.spec.get("autotest", False) is not True else 0b0110000001010100, "T0 - Pre-filling time": step.spec["pre_filling_time"], "P0 - Pre-filling pressure": step.spec["pre_filling_pressure"], "T1 - Filling time": step.spec["filling_time"], diff --git a/src/lib/db/crud_db.py b/src/lib/db/crud_db.py index 8b3e08e..7ab757f 100755 --- a/src/lib/db/crud_db.py +++ b/src/lib/db/crud_db.py @@ -22,7 +22,10 @@ class Crud_DB: @db.atomic() def commit(self, data, deleted_rows=None): if deleted_rows is not None: - deleted = self.table_model.delete().where(self.table_pk << deleted_rows).execute() + if hasattr(self.table_model, "crud_delete"): + deleted = self.table_model.crud_delete(deleted_rows) + else: + deleted = self.table_model.delete().where(self.table_pk << deleted_rows).execute() if deleted != len(deleted_rows): raise AssertionError(f"deleted {deleted} rows instead of the expected {len(deleted_rows)}") # SQLITE DOES NOT SUPPORT UPDATE, ONLY REPLACE @@ -36,7 +39,10 @@ class Crud_DB: except self.table_model.DoesNotExist: db_row = row complete_data.append(db_row) - self.table_model.insert_many(complete_data).on_conflict_replace().execute() + if hasattr(self.table_model, "crud_update"): + self.table_model.crud_update(complete_data) + else: + self.table_model.insert_many(complete_data).on_conflict_replace().execute() def revert(self): self.sorting.clear() @@ -46,7 +52,10 @@ class Crud_DB: def get(self, page=0): if self.table_model._meta.composite_key: raise NotImplementedError("need to implement composite_key") - query = self.table_model.select() + if hasattr(self.table_model, "crud_select"): + query = self.table_model.crud_select() + else: + query = self.table_model.select() if len(self.default_filters) + len(self.filters) > 0: query = query.where(*self.default_filters.values(), *self.filters.values()) if len(self.sorting) > 0: diff --git a/src/lib/db/models/recipes.py b/src/lib/db/models/recipes.py index 7cbc601..14c7ccc 100644 --- a/src/lib/db/models/recipes.py +++ b/src/lib/db/models/recipes.py @@ -21,12 +21,24 @@ class Recipes(BaseModel): steps.append(Steps.get_by_id(step_pk)) return steps + def delete_associated_steps(self): + return Steps.delete().where(Steps._meta.primary_key << list(self.spec.get("available_steps", {}).values())).execute() + def get_steps_map(self): steps = {} for step_name, step_pk in self.spec.get("available_steps", {}).items(): steps[step_name] = Steps.get_by_id(step_pk) return steps + @classmethod + def crud_delete(cls, deleted_rows): + # return cls.delete().where(self._meta.primary_key << deleted_rows).execute() + recipes = list(cls.select().where(cls._meta.primary_key << deleted_rows).execute()) + for recipe in recipes: + recipe.delete_associated_steps() + recipe.delete_instance() + return len(recipes) + # @classmethod # def delete(cls, *args, **kwargs): # # OVERRIDE DELETION