Beispiel #1
0
 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("УСПЕХ", "Запись обновлена")
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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
Beispiel #5
0
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
Beispiel #6
0
 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
Beispiel #7
0
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
Beispiel #8
0
 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
Beispiel #9
0
 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)
Beispiel #10
0
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)
Beispiel #11
0
 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
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
 def _checkProducer(data: dict) -> bool:
     """проверка производителя"""
     if not isinstance(data['Producer'], int):
         Message.show('ОШИБКА', 'Неверно указан производитель')
         return False
     return True