Exemple #1
0
def test_create_database_application(send_mock, data_fixture):
    user = data_fixture.create_user()
    user_2 = data_fixture.create_user()
    group = data_fixture.create_group(user=user)

    handler = CoreHandler()
    handler.create_application(user=user,
                               group=group,
                               type_name='database',
                               name='Test database')

    assert Application.objects.all().count() == 1
    assert Database.objects.all().count() == 1

    database = Database.objects.all().first()
    assert database.name == 'Test database'
    assert database.order == 1
    assert database.group == group

    send_mock.assert_called_once()
    assert send_mock.call_args[1]['application'].id == database.id
    assert send_mock.call_args[1]['user'].id == user.id
    assert send_mock.call_args[1]['type_name'] == 'database'

    with pytest.raises(UserNotInGroupError):
        handler.create_application(user=user_2,
                                   group=group,
                                   type_name='database',
                                   name='')

    with pytest.raises(ApplicationTypeDoesNotExist):
        handler.create_application(user=user,
                                   group=group,
                                   type_name='UNKNOWN',
                                   name='')
Exemple #2
0
def test_create_database_application(send_mock, data_fixture):
    user = data_fixture.create_user()
    user_2 = data_fixture.create_user()
    group = data_fixture.create_group(user=user)

    handler = CoreHandler()
    handler.create_application(user=user,
                               group=group,
                               type_name="database",
                               name="Test database")

    assert Application.objects.all().count() == 1
    assert Database.objects.all().count() == 1

    database = Database.objects.all().first()
    assert database.name == "Test database"
    assert database.order == 1
    assert database.group == group

    send_mock.assert_called_once()
    assert send_mock.call_args[1]["application"].id == database.id
    assert send_mock.call_args[1]["user"].id == user.id
    assert send_mock.call_args[1]["type_name"] == "database"

    with pytest.raises(UserNotInGroup):
        handler.create_application(user=user_2,
                                   group=group,
                                   type_name="database",
                                   name="")

    with pytest.raises(ApplicationTypeDoesNotExist):
        handler.create_application(user=user,
                                   group=group,
                                   type_name="UNKNOWN",
                                   name="")
Exemple #3
0
def test_create_database_application(data_fixture):
    user = data_fixture.create_user()
    user_2 = data_fixture.create_user()
    group = data_fixture.create_group(user=user)

    handler = CoreHandler()
    handler.create_application(user=user, group=group, type_name='database',
                               name='Test database')

    assert Application.objects.all().count() == 1
    assert Database.objects.all().count() == 1

    database = Database.objects.all().first()
    assert database.name == 'Test database'
    assert database.order == 1
    assert database.group == group

    with pytest.raises(UserNotInGroupError):
        handler.create_application(user=user_2, group=group, type_name='database',
                                   name='')

    with pytest.raises(ApplicationTypeDoesNotExist):
        handler.create_application(user=user, group=group, type_name='UNKNOWN',
                                   name='')
Exemple #4
0
    def user_created(self, user, group, group_invitation, template):
        """
        This method is called when a new user is created. We are going to create a
        database, table, view, fields and some rows here as an example for the user.
        """

        # If the user created an account in combination with a group invitation we
        # don't want to create the initial data in the group because data should
        # already exist.
        if group_invitation or template:
            return

        core_handler = CoreHandler()
        table_handler = TableHandler()
        view_handler = ViewHandler()
        field_handler = FieldHandler()

        database = core_handler.create_application(
            user,
            group,
            type_name=self.type,
            name=f"{user.first_name}'s company")

        # Creating the example customers table.
        table = table_handler.create_table(user, database, name="Customers")
        customers_view = view_handler.create_view(user,
                                                  table,
                                                  GridViewType.type,
                                                  name="Grid")
        field_handler.create_field(user,
                                   table,
                                   TextFieldType.type,
                                   name="Last name")
        notes_field = field_handler.create_field(user,
                                                 table,
                                                 LongTextFieldType.type,
                                                 name="Notes")
        active_field = field_handler.create_field(user,
                                                  table,
                                                  BooleanFieldType.type,
                                                  name="Active")
        view_handler.update_grid_view_field_options(
            user,
            customers_view,
            {
                notes_field.id: {
                    "width": 400
                },
                active_field.id: {
                    "width": 100
                }
            },
            fields=[notes_field, active_field],
        )
        model = table.get_model(attribute_names=True)
        model.objects.create(name="Elon",
                             last_name="Musk",
                             active=True,
                             order=1)
        model.objects.create(
            name="Bill",
            last_name="Gates",
            notes=
            ("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce "
             "dignissim, urna eget rutrum sollicitudin, sapien diam interdum nisi, "
             "quis malesuada nibh eros a est."),
            active=False,
            order=2,
        )
        model.objects.create(name="Mark",
                             last_name="Zuckerburg",
                             active=True,
                             order=3)
        model.objects.create(name="Jeffrey",
                             last_name="Bezos",
                             active=True,
                             order=4)

        # Creating the example projects table.
        table_2 = table_handler.create_table(user, database, name="Projects")
        projects_view = view_handler.create_view(user,
                                                 table_2,
                                                 GridViewType.type,
                                                 name="Grid")
        field_handler.create_field(user,
                                   table_2,
                                   DateFieldType.type,
                                   name="Started")
        active_field = field_handler.create_field(user,
                                                  table_2,
                                                  BooleanFieldType.type,
                                                  name="Active")
        model = table_2.get_model(attribute_names=True)
        model.objects.create(name="Tesla",
                             active=True,
                             started=date(2020, 6, 1),
                             order=1)
        model.objects.create(name="SpaceX", active=False, order=2)
        model.objects.create(name="Amazon",
                             active=False,
                             started=date(2018, 1, 1),
                             order=3)
        view_handler.update_grid_view_field_options(
            user,
            projects_view,
            {active_field.id: {
                "width": 100
            }},
            fields=[active_field],
        )
Exemple #5
0
    def user_created(self, user, group):
        """
        This method is called when a new user is created. We are going to create a
        database, table, view, fields and some rows here as an example for the user.

        :param user: The newly created user.
        :param group: The newly created group for the user.
        """

        core_handler = CoreHandler()
        table_handler = TableHandler()
        view_handler = ViewHandler()
        field_handler = FieldHandler()

        database = core_handler.create_application(
            user,
            group,
            type_name=self.type,
            name=f"{user.first_name}'s company")

        # Creating the example customers table.
        table = table_handler.create_table(user, database, name='Customers')
        customers_view = view_handler.create_view(user,
                                                  table,
                                                  GridViewType.type,
                                                  name='Grid')
        field_handler.create_field(user,
                                   table,
                                   TextFieldType.type,
                                   name='Last name')
        notes_field = field_handler.create_field(user,
                                                 table,
                                                 LongTextFieldType.type,
                                                 name='Notes')
        active_field = field_handler.create_field(user,
                                                  table,
                                                  BooleanFieldType.type,
                                                  name='Active')
        view_handler.update_grid_view_field_options(
            customers_view, {
                notes_field.id: {
                    'width': 400
                },
                active_field.id: {
                    'width': 100
                }
            },
            fields=[notes_field, active_field])
        model = table.get_model(attribute_names=True)
        model.objects.create(name='Elon', last_name='Musk', active=True)
        model.objects.create(
            name='Bill',
            last_name='Gates',
            notes=
            ('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce '
             'dignissim, urna eget rutrum sollicitudin, sapien diam interdum nisi, '
             'quis malesuada nibh eros a est.'),
            active=False)
        model.objects.create(name='Mark', last_name='Zuckerburg', active=True)
        model.objects.create(name='Jeffrey', last_name='Bezos', active=True)

        # Creating the example projects table.
        table_2 = table_handler.create_table(user, database, name='Projects')
        projects_view = view_handler.create_view(user,
                                                 table_2,
                                                 GridViewType.type,
                                                 name='Grid')
        field_handler.create_field(user,
                                   table_2,
                                   DateFieldType.type,
                                   name='Started')
        active_field = field_handler.create_field(user,
                                                  table_2,
                                                  BooleanFieldType.type,
                                                  name='Active')
        model = table_2.get_model(attribute_names=True)
        model.objects.create(name='Tesla',
                             active=True,
                             started=date(2020, 6, 1))
        model.objects.create(name='SpaceX', active=False)
        model.objects.create(name='Amazon',
                             active=False,
                             started=date(2018, 1, 1))
        view_handler.update_grid_view_field_options(
            projects_view, {active_field.id: {
                'width': 100
            }},
            fields=[active_field])