Beispiel #1
0
    def test_reload_home(self):
        self.login()

        class FoobarBrick1(self.TestBrick):
            id_ = Brick.generate_id('creme_core', 'test_bricks_reload_home_1')

        class FoobarBrick2(self.TestBrick):
            id_ = Brick.generate_id('creme_core', 'test_bricks_reload_home_2')

        brick_registry.register(FoobarBrick1, FoobarBrick2)

        response = self.assertGET200(
            reverse('creme_core__reload_home_bricks'),
            # data={'brick_id': FoobarBrick1.id_,
            #       'brick_deps': ','.join([FoobarBrick2.id_, 'silly_id'])
            #      }
            data={
                'brick_id': [FoobarBrick1.id_, FoobarBrick2.id_, 'silly_id']
            },
        )
        # self.assertEqual('text/javascript', response['Content-Type'])
        self.assertEqual('application/json', response['Content-Type'])
        self.assertEqual(
            [
                [
                    FoobarBrick1.id_,
                    self.TestBrick.string_format_home(FoobarBrick1.id_)
                ],
                [
                    FoobarBrick2.id_,
                    self.TestBrick.string_format_home(FoobarBrick2.id_)
                ],
            ],
            # load_json(response.content)
            response.json())
Beispiel #2
0
    def test_reload_detailview01(self):
        user = self.login()
        atom = FakeContact.objects.create(user=user,
                                          first_name='Atom',
                                          last_name='Tenma')

        class FoobarBrick(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_detailview01')

            contact = None

            def detailview_display(self, context):
                FoobarBrick.contact = context.get('object')
                # return super(FoobarBrick, self).detailview_display(context)
                return super().detailview_display(context)

        brick_registry.register(FoobarBrick)

        response = self.assertGET200(
            reverse('creme_core__reload_detailview_bricks', args=(atom.id, )),
            data={'brick_id': FoobarBrick.id_},
        )
        # self.assertEqual('text/javascript', response['Content-Type'])
        self.assertEqual('application/json', response['Content-Type'])
        self.assertEqual(
            [[
                FoobarBrick.id_,
                self.TestBrick.string_format_detail(FoobarBrick.id_)
            ]],
            # load_json(response.content)
            response.json())
        self.assertEqual(atom, FoobarBrick.contact)
Beispiel #3
0
    def test_reload_detailview04(self):
        "Not superuser"
        self.login(is_superuser=False)
        SetCredentials.objects.create(role=self.role,
                                      value=EntityCredentials.VIEW,
                                      set_type=SetCredentials.ESET_ALL)

        atom = FakeContact.objects.create(user=self.other_user,
                                          first_name='Atom',
                                          last_name='Tenma')
        self.assertTrue(self.user.has_perm_to_view(atom))

        class FoobarBrick(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_detailview04')

        brick_registry.register(FoobarBrick)

        response = self.assertGET200(
            reverse('creme_core__reload_detailview_bricks', args=(atom.id, )),
            data={'brick_id': FoobarBrick.id_},
        )
        self.assertEqual(
            [[
                FoobarBrick.id_,
                self.TestBrick.string_format_detail(FoobarBrick.id_)
            ]],
            # load_json(response.content)
            response.json())
Beispiel #4
0
    def test_reload_basic04(self):
        "Extra data"
        self.login()
        extra_data = [1, 2]

        # errors = []
        received_extra_data = None

        class FoobarBrick(self.TestBrick):
            id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic04')

            @self.TestBrick.reloading_info.setter
            def reloading_info(self, info):
                nonlocal received_extra_data
                received_extra_data = info

        brick_registry.register(FoobarBrick)

        response = self.assertGET200(
            reverse('creme_core__reload_bricks'),
            data={
                'brick_id': FoobarBrick.id_,
                'extra_data': json_dump({FoobarBrick.id_: extra_data}),
            },
        )
        self.assertEqual(
            [[
                FoobarBrick.id_,
                self.TestBrick.string_format_detail(FoobarBrick.id_)
            ]],
            # load_json(response.content)
            response.json())

        self.assertEqual(extra_data, received_extra_data)
Beispiel #5
0
    def test_reload_basic05(self):
        "Invalid extra data"
        self.login()

        error = None
        received_extra_data = None

        class FoobarBrick(self.TestBrick):
            id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic05')

            def detailview_display(self, context):
                nonlocal error, received_extra_data

                try:
                    received_extra_data = BricksManager.get(
                        context).get_reloading_info(self)
                except Exception as e:
                    error = e

                # return super(FoobarBrick, self).detailview_display(context)
                return super().detailview_display(context)

        brick_registry.register(FoobarBrick)

        self.assertGET200(
            reverse('creme_core__reload_bricks'),
            data={
                'brick_id': FoobarBrick.id_,
                'extra_data': '{%s: ' % FoobarBrick.id_,
            },
        )
        self.assertIsNone(received_extra_data)
        self.assertIsNotNone(error)
Beispiel #6
0
    def test_reload_basic01(self):
        self.login(is_superuser=False, creatable_models=[FakeContact])

        class FoobarBrick1(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_basic01_1')
            permissions = 'creme_core'

        class FoobarBrick2(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_basic01_2')
            permissions = ['creme_core', 'creme_core.add_fakecontact']

        brick_registry.register(FoobarBrick1, FoobarBrick2)

        response = self.assertGET200(
            reverse('creme_core__reload_bricks'),
            data={
                'brick_id': [FoobarBrick1.id_, FoobarBrick2.id_, 'silly_id']
            },
        )
        self.assertEqual('application/json', response['Content-Type'])

        fmt = self.TestBrick.string_format_detail
        self.assertListEqual(
            [
                [FoobarBrick1.id_, fmt(FoobarBrick1.id_)],
                [FoobarBrick2.id_, fmt(FoobarBrick2.id_)],
            ],
            response.json(),
        )
Beispiel #7
0
    def test_reload_detailview06(self):
        "Extra data"
        user = self.login()
        atom = FakeContact.objects.create(user=user,
                                          first_name='Atom',
                                          last_name='Tenma')
        extra_data = [1, 2]
        received_extra_data = []  # TODO: nonlocal in Py3K

        class FoobarBrick(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_detailview06')

            @self.TestBrick.reloading_info.setter
            def reloading_info(self, info):
                received_extra_data.append(info)

        brick_registry.register(FoobarBrick)

        response = self.assertGET200(
            reverse('creme_core__reload_detailview_bricks', args=(atom.id, )),
            data={
                'brick_id': FoobarBrick.id_,
                'extra_data': json_dump({FoobarBrick.id_: extra_data}),
            },
        )
        self.assertEqual([[
            FoobarBrick.id_,
            self.TestBrick.string_format_detail(FoobarBrick.id_)
        ]], response.json())

        self.assertTrue(received_extra_data)
        self.assertEqual(extra_data, received_extra_data[0])
Beispiel #8
0
    def test_reload_basic01(self):
        self.login()

        class FoobarBrick1(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_basic01_1')
            permission = 'persons'

        class FoobarBrick2(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_basic01_2')
            permission = 'persons'

        brick_registry.register(FoobarBrick1, FoobarBrick2)

        response = self.assertGET200(
            reverse('creme_core__reload_bricks'),
            data={
                'brick_id': [FoobarBrick1.id_, FoobarBrick2.id_, 'silly_id']
            },
        )
        self.assertEqual('application/json', response['Content-Type'])
        self.assertEqual([
            [
                FoobarBrick1.id_,
                self.TestBrick.string_format_detail(FoobarBrick1.id_)
            ],
            [
                FoobarBrick2.id_,
                self.TestBrick.string_format_detail(FoobarBrick2.id_)
            ],
        ], response.json())
Beispiel #9
0
    def test_reload_detailview02(self):
        "With dependencies"
        user = self.login()
        atom = FakeContact.objects.create(user=user,
                                          first_name='Atom',
                                          last_name='Tenma')

        class FoobarBrick1(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_detailview02_1')
            contact = None

            def detailview_display(self, context):
                FoobarBrick1.contact = context.get('object')
                # return super(FoobarBrick1, self).detailview_display(context)
                return super().detailview_display(context)

        class FoobarBrick2(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_detailview02_2')
            contact = None

            def detailview_display(self, context):
                FoobarBrick2.contact = context.get('object')
                # return super(FoobarBrick2, self).detailview_display(context)
                return super().detailview_display(context)

        class FoobarBrick3(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_detailview02_3')
            contact = None

            def detailview_display(self, context):
                FoobarBrick3.contact = context.get('object')
                # return super(FoobarBrick3, self).detailview_display(context)
                return super().detailview_display(context)

        brick_registry.register(FoobarBrick1, FoobarBrick2, FoobarBrick3)

        response = self.assertGET200(
            reverse('creme_core__reload_detailview_bricks', args=(atom.id, )),
            data={
                'brick_id':
                [FoobarBrick1.id_, FoobarBrick2.id_, FoobarBrick3.id_]
            },
        )

        fmt = self.TestBrick.string_format_detail
        self.assertEqual(
            [
                [FoobarBrick1.id_, fmt(FoobarBrick1.id_)],
                [FoobarBrick2.id_, fmt(FoobarBrick2.id_)],
                [FoobarBrick3.id_, fmt(FoobarBrick3.id_)],
            ],
            # load_json(response.content)
            response.json())
        self.assertEqual(atom, FoobarBrick1.contact)
        self.assertEqual(atom, FoobarBrick2.contact)
        self.assertEqual(atom, FoobarBrick3.contact)
Beispiel #10
0
    def test_reload_basic02(self):
        "Do not have the credentials"
        self.login(is_superuser=False)

        class FoobarBrick1(self.TestBrick):
            id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic02')
            permission = 'persons'

        brick_registry.register(FoobarBrick1)

        self.assertGET403(reverse('creme_core__reload_bricks'),
                          data={'brick_id': FoobarBrick1.id_})
Beispiel #11
0
    def test_reload_basic03(self):
        "Not superuser"
        app_name = 'persons'
        self.login(is_superuser=False, allowed_apps=[app_name])

        class FoobarBrick1(self.TestBrick):
            id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic03')
            permission = app_name

        brick_registry.register(FoobarBrick1)

        response = self.assertGET200(reverse('creme_core__reload_bricks'),
                                     data={'brick_id': FoobarBrick1.id_})
        self.assertEqual([[
            FoobarBrick1.id_,
            self.TestBrick.string_format_detail(FoobarBrick1.id_)
        ]], response.json())
Beispiel #12
0
    def test_reload_detailview03(self):
        "Do not have the credentials"
        self.login(is_superuser=False)

        atom = FakeContact.objects.create(user=self.other_user,
                                          first_name='Atom',
                                          last_name='Tenma')

        class FoobarBrick(self.TestBrick):
            id_ = Brick.generate_id('creme_core',
                                    'test_bricks_reload_detailview03')

        brick_registry.register(FoobarBrick)

        self.assertGET403(
            reverse('creme_core__reload_detailview_bricks', args=(atom.id, )),
            data={'brick_id': FoobarBrick.id_},
        )
Beispiel #13
0
    def test_brick_import_n_display01(self):
        "Named Brick."
        self.login()

        brick_str = '<div>FOOBAR</div>'
        name = 'CremeBricksTagsTestCase__test_brick_import_n_display01'

        class FooBrick(Brick):
            id_ = Brick.generate_id('creme_core', name)
            verbose_name = 'Testing purpose'

            def detailview_display(self, context):
                return brick_str

        brick_registry.register(FooBrick)

        with self.assertNoException():
            template = Template(
                f"{{% load creme_bricks %}}"
                f"{{% brick_import app='creme_core' name='{name}' as my_brick %}}"
                f"{{% brick_display my_brick %}}")
            render = template.render(RequestContext(self.build_request()))

        self.assertEqual(brick_str, render.strip())