Example #1
0
    def setUpClass(cls):
        super(BuiltinActionsTestCase, cls).setUpClass()

        cls.user = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='Yui',
            last_name='Kawa',
        )
        cls.other_user = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='John',
            last_name='Doe',
        )

        cls.role = cls._create_role(
            'Action view only',
            ['creme_core'],
            users=[cls.user, cls.other_user],  # 'persons'
            set_creds=[
                (EntityCredentials._ALL_CREDS, SetCredentials.ESET_OWN),
            ],
            creates=[FakeContact],
        )

        cls.contact = FakeContact.objects.create(last_name='A', user=cls.user)
        cls.contact_other = FakeContact.objects.create(last_name='B',
                                                       user=cls.other_user)
Example #2
0
    def test_print_text_html(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('description')
        self.assertEqual('', field_printers.print_text_html(c, None, user, field))

        text = 'See you <b>space</b> cowboy...\nThe real folk blues: www.bebop.org'

        with override_settings(URLIZE_TARGET_BLANK=True):
            p1 = field_printers.print_text_html(c, user=user, field=field, fval=text)

        self.assertEqual(
            '<p>See you &lt;b&gt;space&lt;/b&gt; cowboy...<br>The real folk blues: '
            '<a target="_blank" rel="noopener noreferrer" href="http://www.bebop.org">www.bebop.org</a>'
            '</p>',
            p1
        )

        with override_settings(URLIZE_TARGET_BLANK=False):
            p2 = field_printers.print_text_html(c, user=user, field=field, fval=text)

        self.assertEqual(
            '<p>See you &lt;b&gt;space&lt;/b&gt; cowboy...<br>The real folk blues: '
            '<a href="http://www.bebop.org">www.bebop.org</a>'
            '</p>',
            p2
        )
Example #3
0
    def test_relationtype_registry06(self):
        "Register a default sub-registry."
        user1 = self.user
        user2 = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='Chie',
            last_name='Uru',
        )

        class MyRelationField1(lv_form.ListViewSearchField):
            pass

        class MyRelationField2(lv_form.ListViewSearchField):
            pass

        class MyRelRegistry(lv_search.AbstractListViewSearchFieldRegistry):
            def get_field(self, *, cell, user, **kwarg):
                cls = MyRelationField1 if user.username == user1.username else MyRelationField2

                return cls(cell=cell, user=user)

        registry = lv_search.RelationSearchRegistry().register_default(
            MyRelRegistry)

        cell = EntityCellRelation.build(model=FakeContact,
                                        rtype_id=REL_SUB_HAS)
        get_field = registry.get_field
        self.assertIsInstance(get_field(cell=cell, user=user1),
                              MyRelationField1)
        self.assertIsInstance(get_field(cell=cell, user=user2),
                              MyRelationField2)
Example #4
0
    def test_regularfield_registry06(self):
        "register_model_field():  sub-registry."
        user1 = self.user
        user2 = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='Chie',
            last_name='Uru',
        )

        class MyField1(lv_form.ListViewSearchField):
            pass

        class MyField2(lv_form.ListViewSearchField):
            pass

        class MyRegistry(lv_search.AbstractListViewSearchFieldRegistry):
            def get_field(self, *, cell, user, **kwarg):
                cls = MyField1 if user.username == user1.username else MyField2

                return cls(cell=cell, user=user)

        registry = lv_search.RegularFieldSearchRegistry()\
                            .register_model_field(
                                      model=FakeContact,
                                      field_name='first_name',
                                      sfield_builder=MyRegistry
                             )

        cell = EntityCellRegularField.build(model=FakeContact,
                                            name='first_name')
        get_field = registry.get_field
        self.assertIsInstance(get_field(cell=cell, user=user1), MyField1)
        self.assertIsInstance(get_field(cell=cell, user=user2), MyField2)
Example #5
0
    def test_registry01(self):
        user = CremeUser()

        registry = field_printers._FieldPrintersRegistry()
        as_html = registry.get_html_field_value
        as_csv = registry.get_csv_field_value

        sector = FakeSector.objects.all()[0]
        o = FakeOrganisation(
            user=user, name='Mars', url_site='www.mars.info', sector=sector,
        )

        self.assertEqual(o.name, as_html(o, 'name', user))
        self.assertEqual(o.name, as_csv(o, 'name', user))

        self.assertHTMLEqual(
            '<a href="{url}" target="_blank">{url}</a>'.format(url=o.url_site),
            as_html(o, 'url_site', user),
        )
        self.assertEqual(o.url_site, as_csv(o, 'url_site', user))

        self.assertEqual(sector.title, as_html(o, 'sector', user))
        self.assertEqual(sector.title, as_csv(o, 'sector', user))

        self.assertEqual(sector.title, as_html(o, 'sector__title', user))
        self.assertEqual(sector.title, as_csv(o, 'sector__title', user))
Example #6
0
    def test_regularfield_registry07(self):
        "Choices + sub-registry"
        user1 = self.user
        user2 = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='Chie',
            last_name='Uru',
        )

        class MyChoiceField1(lv_form.ListViewSearchField):
            pass

        class MyChoiceField2(lv_form.ListViewSearchField):
            pass

        class MyChoiceRegistry(lv_search.AbstractListViewSearchFieldRegistry):
            def get_field(self, *, cell, user, **kwarg):
                cls = MyChoiceField1 if user.username == user1.username else MyChoiceField2

                return cls(cell=cell, user=user)

        registry = lv_search.RegularFieldSearchRegistry(
        ).register_choice_builder(MyChoiceRegistry)

        cell = EntityCellRegularField.build(model=FakeInvoiceLine,
                                            name='discount_unit')

        get_field = registry.get_field
        self.assertIsInstance(get_field(cell=cell, user=user1), MyChoiceField1)
        self.assertIsInstance(get_field(cell=cell, user=user2), MyChoiceField2)

        self.assertIsInstance(registry.choice_builder, MyChoiceRegistry)
Example #7
0
    def test_registry_choice02(self):
        user = CremeUser()

        registry = _FieldPrintersRegistry()

        def print_choices_html(entity, fval, user, field):
            return '<em>{}</em>'.format(
                getattr(entity, f'get_{field.name}_display')())

        def print_choices_csv(entity, fval, user, field):
            return getattr(entity, f'get_{field.name}_display')().upper()

        registry.register_choice_printer(
            print_choices_html,
            output='html',
        ).register_choice_printer(
            print_choices_csv,
            output='csv',
        )

        # line = FakeInvoiceLine(discount_unit=FAKE_PERCENT_UNIT)
        line = FakeInvoiceLine(discount_unit=FakeInvoiceLine.Discount.PERCENT)
        label = _('Percent')
        self.assertEqual(
            '<em>{}</em>'.format(label),
            registry.get_html_field_value(line, 'discount_unit', user))
        self.assertEqual(
            label.upper(),
            registry.get_csv_field_value(line, 'discount_unit', user))
Example #8
0
    def test_functionfield_registry05(self):
        "Sub-registry defined in FunctionField attribute."
        user1 = self.user
        user2 = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='Chie',
            last_name='Uru',
        )

        class MyFunField1(lv_form.ListViewSearchField):
            pass

        class MyFunField2(lv_form.ListViewSearchField):
            pass

        class MyFunRegistry(lv_search.AbstractListViewSearchFieldRegistry):
            def get_field(self, *, cell, user, **kwarg):
                cls = MyFunField1 if user.username == user1.username else MyFunField2

                return cls(cell=cell, user=user)

        class SearchablePhoneFunctionField(self.PhoneFunctionField):
            search_field_builder = MyFunRegistry

        funfield = SearchablePhoneFunctionField()
        cell = EntityCellFunctionField(model=FakeContact, func_field=funfield)

        registry = lv_search.FunctionFieldSearchRegistry()
        get_field = registry.get_field
        self.assertIsInstance(get_field(cell=cell, user=user1), MyFunField1)
        self.assertIsInstance(get_field(cell=cell, user=user2), MyFunField2)
Example #9
0
    def test_print_boolean_csv(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('is_a_nerd')
        self.assertEqual('', print_boolean_csv(c, None, user, field))

        self.assertEqual(_('Yes'), print_boolean_csv(c, True, user, field))
        self.assertEqual(_('No'), print_boolean_csv(c, False, user, field))
Example #10
0
    def setUpClass(cls):
        super().setUpClass()

        cls.factory = RequestFactory()
        cls.user = CremeUser(username='******', email='*****@*****.**',
                             first_name='Yui', last_name='Kawa',
                            )
        cls.url = FakeContact.get_lv_absolute_url()
Example #11
0
    def setUpClass(cls):
        super().setUpClass()

        cls.user = CremeUser(
            username='******',
            email='*****@*****.**',
            first_name='Yui',
            last_name='Kawa',
        )
Example #12
0
    def test_print_date(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('birthday')
        self.assertEqual('', print_date(c, None, user, field))

        value = date(year=2019, month=8, day=21)
        self.assertEqual(date_format(value, 'DATE_FORMAT'),
                         print_date(c, value, user, field))
Example #13
0
 def test_print_integer01(self):
     o = FakeOrganisation()
     user = CremeUser()
     field = o._meta.get_field('capital')
     self.assertEqual('', field_printers.print_integer(o, fval=None, user=user, field=field))
     self.assertEqual(
         '1234',
         field_printers.print_integer(o, fval=1234, user=user, field=field)
     )
Example #14
0
    def test_print_decimal(self):
        l = FakeInvoiceLine()
        user = CremeUser()
        field = l._meta.get_field('discount')
        self.assertEqual('', field_printers.print_decimal(l, fval=None, user=user, field=field))

        value = Decimal('12.34')
        self.assertEqual(
            number_format(value, use_l10n=True),
            field_printers.print_decimal(l, fval=value, user=user, field=field)
        )
Example #15
0
    def _aux_print_integer_html01(self):
        o = FakeOrganisation()
        user = CremeUser()
        field = o._meta.get_field('capital')
        self.assertEqual(
            '', print_integer_html(o, fval=None, user=user, field=field))

        value = 1234
        self.assertEqual(
            number_format(value, use_l10n=True, force_grouping=True),
            print_integer_html(o, fval=value, user=user, field=field))
Example #16
0
    def test_print_datetime(self):
        a = FakeActivity()
        user = CremeUser()
        field = a._meta.get_field('start')
        self.assertEqual('', field_printers.print_datetime(a, None, user, field))

        value = self.create_datetime(year=2019, month=8, day=21, hour=11, minute=30)
        self.assertEqual(
            date_format(value, 'DATETIME_FORMAT'),  # TODO: localtime() ??
            field_printers.print_datetime(a, value, user, field)
        )
Example #17
0
    def test_print_decimal_csv(self):
        line = FakeInvoiceLine()
        user = CremeUser()
        field = line._meta.get_field('discount')
        self.assertEqual(
            '', print_decimal_csv(line, fval=None, user=user, field=field))

        value = Decimal('1234.56')
        self.assertEqual(
            number_format(value, use_l10n=True),
            print_decimal_csv(line, fval=value, user=user, field=field))
Example #18
0
    def test_print_boolean_html(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('is_a_nerd')
        self.assertEqual('', print_boolean_html(c, None, user, field))

        self.assertEqual(
            '<input type="checkbox" checked disabled/>{}'.format(_('Yes')),
            print_boolean_html(c, True, user, field))
        self.assertEqual('<input type="checkbox" disabled/>{}'.format(_('No')),
                         print_boolean_html(c, False, user, field))
Example #19
0
    def test_print_unsafehtml_html(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('description')
        self.assertEqual('', field_printers.print_unsafehtml_html(c, None, user, field))

        self.assertEqual(
            '<p>&lt;p&gt;See you space cowboy...&lt;/p&gt;</p>',
            field_printers.print_unsafehtml_html(
                c, user=user, field=field,
                fval='<p>See you space cowboy...</p>',
            )
        )
Example #20
0
    def test_simple_print_csv(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('first_name')
        self.assertEqual(
            '',
            field_printers.simple_print_csv(c, fval=None, user=user, field=field)
        )

        value = 'Rei'
        self.assertEqual(
            value,
            field_printers.simple_print_csv(c, value, user, field)
        )
Example #21
0
    def test_print_email_html(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('email')
        self.assertEqual('', print_email_html(c, None, user, field))

        value1 = '*****@*****.**'
        self.assertEqual(f'<a href="mailto:{value1}">{value1}</a>',
                         print_email_html(c, value1, user, field))

        value2 = '</a><script>Muhahaha</script>[email protected]'
        self.assertEqual(
            '<a href="mailto:{email}">{email}</a>'.format(
                email=escape(value2)),
            print_email_html(c, value2, user, field))
Example #22
0
    def test_action_is_visible(self):
        other_user = CremeUser(username='******',
                               first_name='other',
                               last_name='other')

        class OnlyForYuiAction(MockAction):
            @property
            def is_visible(self):
                return self.user.username == 'yui'

        self.assertTrue(MockAction(self.user).is_visible)
        self.assertTrue(MockAction(other_user).is_visible)

        self.assertTrue(OnlyForYuiAction(self.user).is_visible)
        self.assertFalse(OnlyForYuiAction(other_user).is_visible)
Example #23
0
    def test_print_integer02(self):
        "Choices."
        l1 = FakeInvoiceLine(discount_unit=fake_constants.FAKE_PERCENT_UNIT)
        user = CremeUser()
        field = type(l1)._meta.get_field('discount_unit')
        self.assertEqual(
            _('Percent'),
            field_printers.print_integer(l1, fval=None, user=user, field=field)
        )

        l2 = FakeInvoiceLine(discount_unit=fake_constants.FAKE_AMOUNT_UNIT)
        self.assertEqual(
            _('Amount'),
            field_printers.print_integer(l2, fval=None, user=user, field=field)
        )
Example #24
0
    def test_print_url_html(self):
        o = FakeOrganisation()
        user = CremeUser()
        field = o._meta.get_field('url_site')
        self.assertEqual('',
                         print_url_html(o, fval=None, user=user, field=field))

        url1 = 'www.wikipedia.org'
        self.assertEqual(f'<a href="{url1}" target="_blank">{url1}</a>',
                         print_url_html(o, fval=url1, user=user, field=field))

        url2 = '</a><script>Muhaha</script>'
        self.assertEqual(
            '<a href="{url}" target="_blank">{url}</a>'.format(
                url=escape(url2)),
            print_url_html(o, fval=url2, user=user, field=field))
Example #25
0
    def test_simple_print_html(self):
        c = FakeContact()
        user = CremeUser()
        field = c._meta.get_field('first_name')
        self.assertEqual('', field_printers.simple_print_html(c, fval=None, user=user, field=field))

        value = 'Rei'
        self.assertEqual(
            value,
            field_printers.simple_print_html(c, value, user, field)
        )

        self.assertEqual(
            '&lt;b&gt;Rei&lt;b&gt;',
            field_printers.simple_print_html(c, '<b>Rei<b>', user, field)
        )
Example #26
0
    def test_registry_choice01(self):
        user = CremeUser()

        registry = _FieldPrintersRegistry()
        as_html = registry.get_html_field_value
        as_csv = registry.get_csv_field_value

        # l1 = FakeInvoiceLine(discount_unit=FAKE_PERCENT_UNIT)
        l1 = FakeInvoiceLine(discount_unit=FakeInvoiceLine.Discount.PERCENT)
        expected1 = _('Percent')
        self.assertEqual(expected1, as_html(l1, 'discount_unit', user))
        self.assertEqual(expected1, as_csv(l1, 'discount_unit', user))

        # l2 = FakeInvoiceLine(discount_unit=FAKE_AMOUNT_UNIT)
        l2 = FakeInvoiceLine(discount_unit=FakeInvoiceLine.Discount.AMOUNT)
        expected2 = _('Amount')
        self.assertEqual(expected2, as_html(l2, 'discount_unit', user))
        self.assertEqual(expected2, as_csv(l2, 'discount_unit', user))

        l3 = FakeInvoiceLine(discount_unit=None)
        self.assertEqual('', as_html(l3, 'discount_unit', user))
        self.assertEqual('', as_csv(l3, 'discount_unit', user))
Example #27
0
    def test_print_choice(self):
        user = CremeUser()
        field = FakeInvoiceLine._meta.get_field('discount_unit')

        # line1 = FakeInvoiceLine(discount_unit=FAKE_PERCENT_UNIT)
        line1 = FakeInvoiceLine(discount_unit=FakeInvoiceLine.Discount.PERCENT)
        self.assertEqual(
            _('Percent'),
            print_choice(line1, fval='whatever', user=user, field=field),
        )

        # line2 = FakeInvoiceLine(discount_unit=FAKE_AMOUNT_UNIT)
        line2 = FakeInvoiceLine(discount_unit=FakeInvoiceLine.Discount.AMOUNT)
        self.assertEqual(
            _('Amount'),
            print_choice(line2, fval='whatever', user=user, field=field),
        )

        line3 = FakeInvoiceLine(discount_unit=None)
        self.assertEqual(
            '',
            print_choice(line3, fval='whatever', user=user, field=field),
        )
Example #28
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)