Ejemplo n.º 1
0
    def test_customfield_registry01(self):
        create_cfield = partial(
            CustomField.objects.create,
            content_type=ContentType.objects.get_for_model(FakeContact),
        )
        str_cfield = create_cfield(name='A', field_type=CustomField.STR)
        int_cfield = create_cfield(name='B', field_type=CustomField.INT)

        str_cell = EntityCellCustomField(customfield=str_cfield)
        int_cell = EntityCellCustomField(customfield=int_cfield)

        registry = lv_search.CustomFieldSearchRegistry(to_register=())
        field = registry.get_field(cell=str_cell, user=self.user)
        self.assertIsInstance(field, lv_form.ListViewSearchField)
        # self.assertFalse(field.widget.type)

        builder = registry.builder
        self.assertIsNone(builder(CustomField.STR))

        # ---
        class MyCustomField(lv_form.CustomCharField):
            pass

        registry.register(type=CustomField.STR, sfield_builder=MyCustomField)
        str_field = registry.get_field(cell=str_cell, user=self.user)
        self.assertIsInstance(str_field, MyCustomField)

        int_field = registry.get_field(cell=int_cell, user=self.user)
        self.assertIsInstance(int_field, lv_form.ListViewSearchField)

        self.assertEqual(MyCustomField, builder(CustomField.STR))
        self.assertIsNone(builder(CustomField.INT))
Ejemplo n.º 2
0
    def test_customfield_registry02(self):
        "Default data."
        user = self.user
        create_cfield = partial(
            CustomField.objects.create,
            content_type=ContentType.objects.get_for_model(FakeContact),
        )
        str_cfield = create_cfield(name='A', field_type=CustomField.STR)
        int_cfield = create_cfield(name='B', field_type=CustomField.INT)
        bool_cfield = create_cfield(name='C', field_type=CustomField.BOOL)
        deci_cfield = create_cfield(name='D', field_type=CustomField.FLOAT)
        dt_cfield = create_cfield(name='E', field_type=CustomField.DATETIME)
        enum_cfield = create_cfield(name='F', field_type=CustomField.ENUM)
        menum_cfield = create_cfield(name='G',
                                     field_type=CustomField.MULTI_ENUM)

        registry = lv_search.CustomFieldSearchRegistry()

        str_field = registry.get_field(
            cell=EntityCellCustomField(customfield=str_cfield),
            user=user,
        )
        self.assertIsInstance(str_field, lv_form.CustomCharField)

        int_field = registry.get_field(
            cell=EntityCellCustomField(customfield=int_cfield),
            user=user,
        )
        self.assertIsInstance(int_field, lv_form.CustomIntegerField)

        bool_field = registry.get_field(
            cell=EntityCellCustomField(customfield=bool_cfield),
            user=user,
        )
        self.assertIsInstance(bool_field, lv_form.CustomBooleanField)

        deci_field = registry.get_field(
            cell=EntityCellCustomField(customfield=deci_cfield),
            user=user,
        )
        self.assertIsInstance(deci_field, lv_form.CustomDecimalField)

        dt_field = registry.get_field(
            cell=EntityCellCustomField(customfield=dt_cfield),
            user=user,
        )
        self.assertIsInstance(dt_field, lv_form.CustomDatetimeField)

        enum_field = registry.get_field(
            cell=EntityCellCustomField(customfield=enum_cfield),
            user=user,
        )
        self.assertIsInstance(enum_field, lv_form.CustomChoiceField)

        menum_field = registry.get_field(
            cell=EntityCellCustomField(customfield=menum_cfield),
            user=user,
        )
        self.assertIsInstance(menum_field, lv_form.CustomChoiceField)
Ejemplo n.º 3
0
    def test_customfield_registry03(self):
        "Sub-registry."
        user1 = self.user
        user2 = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='Chie',
            last_name='Uru',
        )

        class MyCustomField1(lv_form.ListViewSearchField):
            pass

        class MyCustomField2(lv_form.ListViewSearchField):
            pass

        class MyCustomRegistry(lv_search.AbstractListViewSearchFieldRegistry):
            def get_field(self, *, cell, user, **kwarg):
                cls = MyCustomField1 if user.username == user1.username else MyCustomField2

                return cls(cell=cell, user=user)

        cfield = CustomField.objects.create(
            content_type=FakeContact,
            name='A',
            field_type=CustomField.STR,
        )

        cell = EntityCellCustomField(customfield=cfield)

        registry = lv_search.CustomFieldSearchRegistry()\
                            .register(type=CustomField.STR, sfield_builder=MyCustomRegistry)

        get_field = registry.get_field
        self.assertIsInstance(get_field(cell=cell, user=user1), MyCustomField1)
        self.assertIsInstance(get_field(cell=cell, user=user2), MyCustomField2)