Пример #1
0
    def test_remove_table(self):
        test_table_1 = Table('test_table_1', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'},
                             [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']])
        test_table_2 = Table('test_table_2', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'},
                             [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']])

        project_model = ProjectModel()

        project_model.add_table(test_table_1)
        project_model.add_table(test_table_2)

        project_model.remove_table('test_table_1')

        self.assertNotIn(test_table_1, project_model.get_structure())
        self.assertIn(test_table_2, project_model.get_structure())
Пример #2
0
    def test_add_table(self):
        test_table = Table('test_table', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'},
                           [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']])
        project_model = ProjectModel()
        project_model.add_table(test_table)

        self.assertEqual(str(test_table), str(project_model.get_table('test_table')))
Пример #3
0
    def edit_row(self):
        """
        edit row method
        this method checks if table and raw were chosen from combo boxes and initializes new EditRowsWindow object
        :return:
        """
        try:
            current_table = self.__combo_box_1.currentText()
            current_row = self.__combo_box_2.currentText()
            self.__project_controller.check_removed_table_name(current_table)
            self.__project_controller.check_removed_row(current_row)

            new_table = Table(
                current_table,
                self.__project_model.get_table(
                    current_table).get_number_of_columns(), 1,
                self.__project_model.get_table(
                    current_table).get_column_dict(), [
                        self.__project_model.get_table_row(
                            current_table,
                            self.__project_model.get_row_index(
                                current_table, current_row))
                    ])

            edit_row_window = EditRowsWindow(self.__project_model, new_table)
            edit_row_window.setModal(True)
            edit_row_window.exec()
            self.set_combo_box_2()

        except Exception as exception:

            warning = WarningWindow(str(exception))
            warning.setModal(True)
            warning.exec()
Пример #4
0
    def test_add_row(self):
        test_table_1 = Table('test_table_1', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'},
                             [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']])
        project_model = ProjectModel()

        project_model.add_table(test_table_1)

        project_model.add_row('test_table_1', [4, 'row_4'])

        self.assertEqual(project_model.get_table('test_table_1').get_number_of_rows(), 4)
Пример #5
0
    def test_edit_row(self):
        test_table_1 = Table('test_table_1', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'},
                             [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']])
        project_model = ProjectModel()

        project_model.add_table(test_table_1)

        project_model.edit_row('test_table_1', [2, 'row_2'], [2, 'row_2_edited'])

        edited_row = project_model.get_table('test_table_1').get_row(1)

        self.assertEqual(edited_row, [2, 'row_2_edited'])
Пример #6
0
    def __init__(self, project_model: ProjectModel):
        """
        Add table class constructor

        :param ProjectModel:
            ProjectModel
        """
        super().__init__()
        self.__title = 'Stwórz tabelę'
        self.__top = 400
        self.__left = 400
        self.__width = 405
        self.__height = 200
        self.__buttons = MyButton(self)
        self.__labels = MyLabel(self)
        self.__project_model = project_model
        self.__project_controller = ProjectController()
        self.__new_table = Table()
        self.get_table_name = lambda: self.__new_table.get_table_name()
        self.get_number_of_columns = lambda: self.__new_table.get_number_of_columns(
        )
        self.init_window()
Пример #7
0
    def test_file(self):
        table_attributes = ('test_table', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'},
                            [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']])
        table_to_save = Table(*table_attributes)
        project_model_1 = ProjectModel()
        project_model_1.add_table(table_to_save)

        project_model_1.write_to_file('test_file.txt')

        project_model_2 = ProjectModel()
        project_model_2.read_from_file('test_file.txt')

        get_table = project_model_2.get_table('test_table')

        self.assertEqual(str(table_to_save), str(get_table))
Пример #8
0
    def test_lambda(self):
        project_model = ProjectModel()
        project_model.add_table(Table('test_table', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'},
                                      [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']]))

        lambda_expression = project_model.generate_lambda_expression('test_table')

        self.assertNotEqual(lambda_expression, None)

        records_1 = project_model.lambda_browse('test_table', lambda_expression)

        self.assertGreaterEqual(len(records_1), 0)

        records_2 = project_model.lambda_browse('test_table', 'lambda col_1:col_1>1')

        self.assertEqual(records_2, [[2, 'row_2'], [3, 'row_3']])
Пример #9
0
    def browse(self):
        """
        Browse method
        this method loads lambda-expression (typed by user) and displays table only with rows returned by lambda_browse method from ProjectModel
        :return:
        """
        try:
            new_table = self.__project_model.lambda_browse(
                self.__table_name, self.__lineedit.text())
            self.close()
            try:

                editTable = EditRowsWindow(
                    self.__project_model,
                    Table(
                        self.__table_name,
                        self.__project_model.get_table(
                            self.__table_name).get_number_of_columns(),
                        len(new_table),
                        self.__project_model.get_table(
                            self.__table_name).get_column_dict(), new_table))

            except:
                raise BadLambdaExpressionException(expression=new_table)
            else:
                editTable.setModal(True)
                editTable.exec()

        except BadLambdaExpressionException as exception:
            warning = WarningWindow(str(exception))
            warning.setModal(True)
            warning.exec()

        except Exception:
            warning = WarningWindow("Wystąpił problem z wyszukiwaniem danych")
            warning.setModal(True)
            warning.exec()
Пример #10
0
class AddTableWindow(QDialog):
    """
    Add table class
    """
    def __init__(self, project_model: ProjectModel):
        """
        Add table class constructor

        :param ProjectModel:
            ProjectModel
        """
        super().__init__()
        self.__title = 'Stwórz tabelę'
        self.__top = 400
        self.__left = 400
        self.__width = 405
        self.__height = 200
        self.__buttons = MyButton(self)
        self.__labels = MyLabel(self)
        self.__project_model = project_model
        self.__project_controller = ProjectController()
        self.__new_table = Table()
        self.get_table_name = lambda: self.__new_table.get_table_name()
        self.get_number_of_columns = lambda: self.__new_table.get_number_of_columns(
        )
        self.init_window()

    def init_window(self):
        """
        Init Window method
        this method sets all window widgets
        """
        self.setWindowTitle('Dodaj tabele')
        self.setGeometry(self.__left, self.__top, self.__width, self.__height)
        self.setFixedSize(self.__width, self.__height)

        self.__lineedit = QLineEdit(self)
        self.__lineedit.move(130, 50)
        self.create_counter_label(
            str(self.__new_table.get_number_of_columns()), 130, 100)

        self.__labels.createLabel('Nazwa tabeli', 50, 50)
        self.__labels.createLabel('Liczba kolumn', 50, 100)

        self.button_1 = self.__buttons.create_button(
            'Dodaj kolumne', 10, 160, 120.3, 30,
            'Kliknij aby dodać nową kolumne do tabeli', self.add_column)
        self.button_2 = self.__buttons.create_button(
            'Dodaj tabele', 143.3, 160, 120.3, 30, 'Kliknij aby dodać tabele',
            self.add_table)
        self.button_3 = self.__buttons.create_button(
            'Anuluj', 276.6, 160, 120.3, 30, 'Kliknij aby dodać tabele',
            self.close)

        self.show()

    def create_counter_label(self, text, x_coordinate, y_coordinate):
        """
        Create counter label method
        this method creates new label which displays number of columns in created table

        :param text: str
        :param x_coordinate: int
        :param y_coordinate: int
        """
        self.counter_label = QLabel(self)
        self.counter_label.setText(text)
        self.counter_label.adjustSize()
        self.counter_label.move(x_coordinate, y_coordinate)

    def add_column(self):
        """
        Add column method
        this method initializes new AddColumnWindow Object and sets counter label
        """
        self.__addColumn = AddColumnWindow(self.__project_model,
                                           self.__new_table)
        self.__addColumn.setModal(True)
        self.__addColumn.exec()
        self.counter_label.setText(
            str(self.__new_table.get_number_of_columns()))

    def add_table(self):
        """
        Add table method
        this method loads table name and checks if created table number of columns is not equal 0.
        If there was no exception, add_table method from ProjectModel is called
        """
        try:
            self.__project_controller.check_table_name(self.__lineedit.text())
            self.__project_controller.check_number_of_columns(
                self.__new_table.get_number_of_columns())
            self.__new_table.set_table_name(self.__lineedit.text())
            self.__project_model.add_table(self.__new_table)
            self.close()

        except (EmptyTableNameException, NoColumnTableException,
                ExistingTableException) as exception:
            warning = WarningWindow(str(exception))
            warning.setModal(True)
            warning.exec()

        except Exception:
            warning = WarningWindow("Wystąpiły problemy z dodawaniem tabeli")
            warning.setModal(True)
            warning.exec()