def entity_test_models(translation_a, locale_b): """This fixture provides: - 2 translations of a plural entity - 1 translation of a non-plural entity - A subpage that contains the plural entity """ entity_a = translation_a.entity locale_a = translation_a.locale project_a = entity_a.resource.project locale_a.cldr_plurals = "0,1" locale_a.save() translation_a.plural_form = 0 translation_a.active = True translation_a.save() resourceX = ResourceFactory( project=project_a, path="resourceX.po", ) entity_a.string = "Entity zero" entity_a.key = entity_a.string entity_a.string_plural = "Plural %s" % entity_a.string entity_a.order = 0 entity_a.save() entity_b = EntityFactory( resource=resourceX, string="entity_b", key="Key%sentity_b" % KEY_SEPARATOR, order=0, ) translation_a_pl = TranslationFactory( entity=entity_a, locale=locale_a, plural_form=1, active=True, string="Plural %s" % translation_a.string, ) translationX = TranslationFactory( entity=entity_b, locale=locale_a, active=True, string="Translation %s" % entity_b.string, ) subpageX = SubpageFactory( project=project_a, name="Subpage", ) subpageX.resources.add(entity_a.resource) return translation_a, translation_a_pl, translationX, subpageX
def approved_translation(locale_a, project_locale_a, entity_a, user_a): return TranslationFactory( entity=entity_a, locale=locale_a, user=user_a, approved=True, active=True, )
def test_lookup_collation(resource_a, locale_a): """ Filter translations according to collation. """ entity = EntityFactory.create(resource=resource_a, string="string",) entity_args = [ {"string": u"First string", "comment": u"random Strıng"}, {"string": u"Second strİng", "comment": u"random string"}, {"string": u"Third Strıng", "comment": u"random strİng"}, ] entities = [ EntityFactory(resource=resource_a, string=x["string"], comment=x["comment"],) for x in entity_args ] translation_args = [ u"this is string", u"this is STRİNG", u"this is Strıng", u"this is StrInG", u"this is sTriNg", ] translations = [ TranslationFactory(entity=entity, locale=locale_a, string=s,) for s in translation_args ] # Check if 'Iı' and 'İi' are appropriately distinguished and filtered # according to turkish(tr_tr) collation assert set( resource_a.entities.filter(string__icontains_collate=(u"string", "tr_tr")) ) == set([entities[n] for n in [0, 1]] + [entity]) assert set( resource_a.entities.filter(comment__icontains_collate=(u"strİng", "tr_tr")) ) == set([entities[n] for n in [1, 2]]) assert set( Translation.objects.filter(string__icontains_collate=(u"string", "tr_tr")) ) == set([translations[n] for n in [0, 1, 4]]) assert set( Translation.objects.filter(string__icontains_collate=(u"string", "tr_tr")) ) == set([translations[n] for n in [0, 1, 4]]) assert set( Translation.objects.filter(string__icontains_collate=(u"strİng", "tr_tr")) ) == set([translations[n] for n in [0, 1, 4]]) assert set( Translation.objects.filter(string__icontains_collate=(u"strıng", "tr_tr")) ) == set([translations[n] for n in [2, 3]]) # Check if differentiation fails without any collation(C) assert set( Translation.objects.filter(string__icontains_collate=(u"string", "C")) ) == set([translations[n] for n in [0, 3, 4]]) # Compare the icontains_collate query with regular i_contains query assert list(Translation.objects.filter(string__icontains=u"string")) == [ translations[n] for n in [0, 2, 3, 4] ]
def translation_b(translation_a): """ This fixture provides a secondary translation for translation_a's entity. """ return TranslationFactory( entity=translation_a.entity, locale=translation_a.locale, string="Translation B for entity_a", )
def translation_b(translation_a): """ This fixture provides a secondary translation for translation_a's entity. """ translation_b = TranslationFactory( entity=translation_a.entity, locale=translation_a.locale, string="Translation B for entity_a", ) translation_b.locale.refresh_from_db() translation_b.entity.resource.project.refresh_from_db() return translation_b
def rejected_translation(locale_a, project_locale_a, entity_a, user_a): return TranslationFactory(entity=entity_a, locale=locale_a, user=user_a, rejected=True)
def test_lookup_collation(resource_a, locale_a): """ Filter translations according to collation. """ entity = EntityFactory.create( resource=resource_a, string="string", ) entity_args = [ { 'string': u'First string', 'comment': u'random Strıng', }, { 'string': u'Second strİng', 'comment': u'random string', }, { 'string': u'Third Strıng', 'comment': u'random strİng', }, ] entities = [ EntityFactory( resource=resource_a, string=x['string'], comment=x['comment'], ) for x in entity_args ] translation_args = [ u'this is string', u'this is STRİNG', u'this is Strıng', u'this is StrInG', u'this is sTriNg' ] translations = [ TranslationFactory( entity=entity, locale=locale_a, string=s, ) for s in translation_args ] # Check if 'Iı' and 'İi' are appropriately distinguished and filtered # according to turkish(tr_tr) collation assert (set( Entity.objects.filter(string__icontains_collate=( u'string', 'tr_tr'))) == set([entities[n] for n in [0, 1]] + [entity])) assert (set( Entity.objects.filter(comment__icontains_collate=(u'strİng', 'tr_tr'))) == set([ entities[n] for n in [1, 2] ])) assert (set( Translation.objects.filter( string__icontains_collate=(u'string', 'tr_tr'))) == set( [translations[n] for n in [0, 1, 4]])) assert (set( Translation.objects.filter( string__icontains_collate=(u'string', 'tr_tr'))) == set( [translations[n] for n in [0, 1, 4]])) assert (set( Translation.objects.filter( string__icontains_collate=(u'strİng', 'tr_tr'))) == set( [translations[n] for n in [0, 1, 4]])) assert (set( Translation.objects.filter( string__icontains_collate=(u'strıng', 'tr_tr'))) == set( [translations[n] for n in [2, 3]])) # Check if differentiation fails without any collation(C) assert (set( Translation.objects.filter( string__icontains_collate=(u'string', 'C'))) == set( [translations[n] for n in [0, 3, 4]])) # Compare the icontains_collate query with regular i_contains query assert (list(Translation.objects.filter(string__icontains=u'string')) == [ translations[n] for n in [0, 2, 3, 4] ])