def _updateInfo(self): """запрос на обновление текущей записи""" logger.debug(self._updateInfo.__doc__) if funcs_aux.askPassword(): self._bindings['test'].toData() self.db_manager.saveInfo_Test() logger.debug(f"запись № {self._testdata.test_.ID} обновлена") Message.show("УСПЕХ", "Запись обновлена")
def _deleteInfo(self): """запрос на удаление текущей записи""" logger.debug(self._deleteInfo.__doc__) if funcs_aux.askPassword(): test_ = self._testdata.test_ self.db_manager.removeRecord(test_.subclass, test_.ID) logger.debug(f"запись № {test_.ID} удалена") Message.show("УСПЕХ", "Запись удалена") self._testlist.refresh(self.db_manager)
def _onClickedTestResult_Save(self): """нажата кнопка сохранения результатов теста""" logger.debug(self._onClickedTestResult_Save.__doc__) self.graph_manager.saveTestdata() test_ = self._testdata.test_ result = self.db_manager.writeRecord(test_.subclass, dict(test_)) title = 'УСПЕХ' if result else 'ОШИБКА' message = 'Результаты сохранены' if result else 'Запись заблокирована' Message.show(title, message)
def _checkNumeric(self, data: dict) -> bool: """проверка числовых значений""" for name in ('Rpm', 'Min', 'Nom', 'Max'): if not data[name].isnumeric(): elem = self.findChild(QLabel, f'lbl{name}') if elem: name = elem.text() Message.show('ОШИБКА', f'Поле {name} должно содержать число') return False return True
def askPassword(): """проверка пароля""" result = Message.password( 'Внимание', 'Необходимо подтверждение паролем:' ) == b'h\x87\x87\xd8\xff\x14LP,\x7f\\\xff\xaa\xfe,\xc5' \ b'\x88\xd8`y\xf9\xde\x880L&\xb0\xcb\x99\xce\x91\xc6' if not result: Message.show("ОШИБКА", "Не верный пароль") return result
def _checkPoints(data: dict) -> bool: """проверка корректности и длины массивов точек""" try: vals_flw = list(map(float, data['Flows'].split(','))) vals_lft = list(map(float, data['Lifts'].split(','))) vals_pwr = list(map(float, data['Powers'].split(','))) if not len(vals_flw) == len(vals_lft) == len(vals_pwr): Message.show('ОШИБКА', 'Кол-во значений в полях точек не совпадает') return False except (TypeError, ValueError): Message.show('ОШИБКА', 'Неверный формат в полях точек') return False return True
def groupValidate(group: QGroupBox): """проверяет заполнение всех полей группы""" logger.debug( f"проверяет заполнение всех полей группы {group.objectName()}") items = group.findChildren(QLineEdit) + group.findChildren(QComboBox) empty_fields = [ item.toolTip() for item in items if (item.objectName().startswith('txt') and not item.text()) or \ (item.objectName().startswith('cmb') and not item.currentText()) ] if empty_fields: Message.show( "ВНИМАНИЕ", "Необходимо заполнить поля:\n-> " + "\n-> ".join(empty_fields)) return False return True
def _checkAllFilled(self) -> bool: """проверка на заполнение всех полей""" # список пустых полей empty = [] for item in self.findChildren((QLineEdit, QComboBox)): if isinstance(item, QLineEdit) and item.text(): continue if isinstance(item, QComboBox) and item.currentText(): continue empty.append(item.toolTip()) # отображение списка пустых полей if empty: msg = ("\n->").join(empty) msg = f"Необходимо заполнить следующие поля:\n{msg}" Message.show("Внимание", msg) return False return True
def _onClicked_PointAdd(self): """нажата кнопка добавления точки""" logger.debug(self._onClicked_PointAdd.__doc__) spin = self.spinPointLines if spin.value() == 0: Message.show("Внимание:", "Достигнуто максимальное кол-во точек.") return current_vals = funcs_test.getCurrentVals(self) if spin.value() == spin.maximum(): self.graph_manager.setPointLines_max(current_vals[0]) if not self.graph_manager.checkPointExists(current_vals[0]): self.graph_manager.markersAddKnots() self.graph_manager.addPointsToCharts(*current_vals) self.graph_manager.drawCharts(self.frameGraphTest) current_vals.append(self._testdata.pump_.Stages) funcs_table.addToTable_points(self.tablePoints, current_vals) spin.setValue(int(spin.value()) - 1)
def addNew_Type(wnd, type_name: str, producer_name: str=""): """запрос на добавление нового типоразмера""" logger.debug(f"{addNew_Type.__doc__} {type_name}") if Message.ask("Внимание", "Типоразмер не найден. Добавить новый?"): data = { 'ProducerName': producer_name, 'TypeName': type_name } wnd.signalTypeChangeRequest.emit(data)
def saveType(self, type_data: dict) -> bool: """сохраняет информацию о типоразмере""" if self._is_ready: # если производитель не выбран, но указано его имя # добавляем нового и выбираем if not type_data['Producer'] and type_data['ProducerName']: type_data['Producer'] = self._data_manager.createRecord( Producer, {'Name': type_data.pop('ProducerName')}) # если производитель выбран # добавляем новый типоразмер if type_data['Producer']: result = self._data_manager.createRecord(Type, type_data) Message.show( "УСПЕХ" if result else "ОШИБКА", f"Новый типоразмер '{type_data['Name']}' добавлен" \ if result else "Ошибка добавление нового типоразмера" ) return result return False
def findInfo_Test(wnd, order_num: str) -> dict: """проверка присутствия наряд-заказа в базе""" logger.debug(f"{findInfo_Test.__doc__} -> {order_num}") test = wnd.db_manager.findRecord_Test(order_num) # если есть - выбираем if test and Message.ask( "Внимание", "Запись с таким наряд-заказом " "уже присутствует в базе данных.\n" "Хотите выбрать её или создать новую?", "Выбрать", "Отмена" ): return test return None
def findInfo_Pump(wnd, serial: str, type_id: int) -> dict: """проверка присутствия насоса в базе""" logger.debug(f"{findInfo_Pump.__doc__} {serial}") pump = wnd.db_manager.findRecord_Pump(serial, type_id) # если есть - выбираем if pump and Message.ask( "Внимание", "Насос с таким заводским номером " "уже присутствует в базе данных.\n" "Хотите выбрать его?", "Выбрать", "Отмена" ): return pump return None
def _checkProducer(data: dict) -> bool: """проверка производителя""" if not isinstance(data['Producer'], int): Message.show('ОШИБКА', 'Неверно указан производитель') return False return True