Beispiel #1
0
    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
Beispiel #2
0
 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()
Beispiel #3
0
    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]))