def act(self): """ Функция, реагирующя на нажатие кнопок "Сохранить" и "Найти" Меняет свое действие и название в зависимости от текущего состояния программы """ self.unblock_forms() if self.action_button.text() == 'Сохранить': license = self.parse_license() if not license: QMessageBox.question(self, "Ошибка", "Поле № Лицензии не может быть пустым", QMessageBox.Ok) return if self.state == self.NEW: if License.get_by_id(int(self.input_forms['id'].text())): QMessageBox.question(self, "Ошибка", "Лицензия с номером %s уже есть в базе\nСохранение невозможно" % (self.input_forms['id'].text()), QMessageBox.Ok) return license.write() self.curr_id = license['id'] self.state = self.EDIT self.update_list() else: attrs = self.parse_attributes() self.update_list(attrs) self.state = self.EDIT
def delete(self): """ Функция, реагирующая на нажатие кнопки "Удалить" """ reply = self.open_dialog("Вы собираетесь удалить лицензию №%d" % self.curr_id, "Удаление") if reply: license = License.get_by_id(self.curr_id) license.delete() self.clear_forms() self.update_list()
def fill(self, _id, useless=None): """ Заполняет поля лицензей, получая как параметр ее id Так же очищает лицензию, если useless == 0 Дополнительно меняет состояние программы и название кнопки """ if useless: self.unblock_forms() if self.state == self.NEW: reply = self.open_dialog("Вы не сохранили изменения, все равно выйти?", "Предупреждение") if not reply: return if _id is None: return if useless == 0: # трюк, чтобы не писать лишнего метода на очистку # параметр useless все равно передается от события license = License() elif _id.text() == 'Фильтр': license = self.filter self.action_button.setText('Поиск') self.delete_button.setEnabled(False) self.curr_id = None self.state = None else: license = License.get_by_id(_id.text()) self.action_button.setText('Сохранить') self.delete_button.setEnabled(True) self.curr_id = int(_id.text()) self.state = self.EDIT self.update_title() for field in License.fields: if not license[field.eng]: if field.type == date: self.input_forms[field.eng].setDate(self.MIN_DATE) #elif field. else: self.input_forms[field.eng].clear() continue if field.type == date: l_date = Frame.parse_date(license[field.eng]) in_date = QDate(l_date) self.input_forms[field.eng].setDate(in_date) elif field.type == str: self.input_forms[field.eng].setText(license[field.eng]) else: self.input_forms[field.eng].setText(str(license[field.eng]))