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)
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 <b>space</b> 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 <b>space</b> cowboy...<br>The real folk blues: ' '<a href="http://www.bebop.org">www.bebop.org</a>' '</p>', p2 )
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)
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)
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))
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)
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))
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)
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))
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()
def setUpClass(cls): super().setUpClass() cls.user = CremeUser( username='******', email='*****@*****.**', first_name='Yui', last_name='Kawa', )
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))
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) )
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) )
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))
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) )
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))
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))
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><p>See you space cowboy...</p></p>', field_printers.print_unsafehtml_html( c, user=user, field=field, fval='<p>See you space cowboy...</p>', ) )
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) )
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))
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)
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) )
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))
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( '<b>Rei<b>', field_printers.simple_print_html(c, '<b>Rei<b>', user, field) )
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))
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), )
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)