def do_test_get_altsrclangs_nobody(nobody, language, unit, client): tp = unit.store.translation_project response = client.get("/xhr/units/%s/edit/" % unit.id, HTTP_X_REQUESTED_WITH='XMLHttpRequest') request = response.wsgi_request # User has no altsrclangs and no HTTP_ACCEPT_LANGUAGE. nobody.alt_src_langs.clear() alt_src_langs = get_alt_src_langs(request, nobody, tp) assert alt_src_langs is None # User has altsrclangs and no HTTP_ACCEPT_LANGUAGE. nobody.alt_src_langs.clear() nobody.alt_src_langs.add(language) alt_src_langs = get_alt_src_langs(request, nobody, tp) assert alt_src_langs is None # HTTP_ACCEPT_LANGUAGE and no user's altsrclangs. nobody.alt_src_langs.clear() response = client.get("/xhr/units/%s/edit/" % unit.id, HTTP_X_REQUESTED_WITH='XMLHttpRequest', HTTP_ACCEPT_LANGUAGE=language.code) request = response.wsgi_request alt_src_langs = get_alt_src_langs(request, nobody, tp) assert alt_src_langs is None # HTTP_ACCEPT_LANGUAGE and user has altsrclangs. nobody.alt_src_langs.add(language) alt_src_langs = get_alt_src_langs(request, nobody, tp) assert alt_src_langs is None
def test_get_edit_unit(project0_nongnu, get_edit_unit, client, request_users, settings): user = request_users["user"] if user.username != "nobody": client.login( username=user.username, password=request_users["password"]) unit = get_edit_unit store = unit.store filetype = unit.store.filetype.name directory = store.parent translation_project = store.translation_project project = translation_project.project language = translation_project.language response = client.get( "/xhr/units/%s/edit/" % unit.id, HTTP_X_REQUESTED_WITH='XMLHttpRequest') request = response.wsgi_request result = json.loads(response.content) src_lang = unit.store.translation_project.project.source_language alt_src_langs = get_alt_src_langs(request, user, translation_project) altsrcs = find_altsrcs(unit, alt_src_langs, store=store, project=project) altsrcs = {x.id: x.data for x in altsrcs} sources = {altsrcs[x]['language_code']: altsrcs[x]['target'] for x in altsrcs} sources[src_lang.code] = unit.source assert result["is_obsolete"] is False assert result["sources"] == sources assert response.context["unit"] == unit assert response.context["priority"] == store.priority assert response.context["store"] == store assert response.context["filetype"] == filetype assert response.context["directory"] == directory assert response.context["project"] == project assert response.context["language"] == language assert response.context["source_language"] == src_lang assert response.context["altsrcs"] == altsrcs assert response.context["cantranslate"] == check_user_permission( user, "translate", directory) assert response.context["cansuggest"] == check_user_permission( user, "suggest", directory) assert response.context["canreview"] == check_user_permission( user, "review", directory) assert response.context["has_admin_access"] == check_user_permission( user, "administrate", directory)
def test_get_edit_unit(client, request_users, settings): user = request_users["user"] if user.username != "nobody": client.login( username=user.username, password=request_users["password"]) unit = Unit.objects.get_translatable(user).first() store = unit.store directory = store.parent translation_project = store.translation_project project = translation_project.project language = translation_project.language response = client.get( "/xhr/units/%s/edit/" % unit.id, HTTP_X_REQUESTED_WITH='XMLHttpRequest') request = response.wsgi_request result = json.loads(response.content) src_lang = unit.store.translation_project.project.source_language alt_src_langs = get_alt_src_langs(request, user, translation_project) altsrcs = find_altsrcs(unit, alt_src_langs, store=store, project=project) assert result["is_obsolete"] is False assert result["sources"] == {src_lang.code: unit.source} assert response.context["unit"] == unit assert response.context["priority"] == unit.priority assert response.context["store"] == store assert response.context["directory"] == directory assert response.context["project"] == project assert response.context["language"] == language assert response.context["source_language"] == src_lang assert response.context["altsrcs"] == altsrcs assert response.context["cantranslate"] == check_user_permission( user, "translate", directory) assert response.context["cansuggest"] == check_user_permission( user, "suggest", directory) assert response.context["canreview"] == check_user_permission( user, "review", directory) assert response.context["has_admin_access"] == check_user_permission( user, "administrate", directory)
def test_get_edit_unit(client, request_users, settings): user = request_users["user"] if user.username != "nobody": client.login(username=user.username, password=request_users["password"]) unit = Unit.objects.get_translatable(user).first() store = unit.store directory = store.parent translation_project = store.translation_project project = translation_project.project language = translation_project.language response = client.get("/xhr/units/%s/edit/" % unit.id, HTTP_X_REQUESTED_WITH='XMLHttpRequest') request = response.wsgi_request result = json.loads(response.content) src_lang = unit.store.translation_project.project.source_language alt_src_langs = get_alt_src_langs(request, user, translation_project) altsrcs = find_altsrcs(unit, alt_src_langs, store=store, project=project) assert result["is_obsolete"] is False assert result["sources"] == {src_lang.code: unit.source} assert response.context["unit"] == unit assert response.context["priority"] == unit.priority assert response.context["store"] == store assert response.context["directory"] == directory assert response.context["project"] == project assert response.context["language"] == language assert response.context["source_language"] == src_lang assert response.context["altsrcs"] == altsrcs assert response.context["cantranslate"] == check_user_permission( user, "translate", directory) assert response.context["cansuggest"] == check_user_permission( user, "suggest", directory) assert response.context["canreview"] == check_user_permission( user, "review", directory) assert response.context["has_admin_access"] == check_user_permission( user, "administrate", directory)
def test_get_edit_unit(project0_nongnu, get_edit_unit, client, request_users, settings): user = request_users["user"] if user.username != "nobody": client.login(username=user.username, password=request_users["password"]) unit = get_edit_unit store = unit.store filetype = unit.store.filetype.name directory = store.parent translation_project = store.translation_project project = translation_project.project language = translation_project.language response = client.get("/xhr/units/%s/edit/" % unit.id, HTTP_X_REQUESTED_WITH='XMLHttpRequest') request = response.wsgi_request result = json.loads(response.content) special_characters = [] for specialchar in language.specialchars: code = ord(specialchar) special_characters.append({ 'display': CHARACTERS_NAMES.get(code, specialchar), 'code': code, 'hex_code': "U+" + hex(code)[2:].upper(), 'name': unicodedata.name(specialchar, ''), }) src_lang = unit.store.translation_project.project.source_language alt_src_langs = get_alt_src_langs(request, user, translation_project) altsrcs = find_altsrcs(unit, alt_src_langs, store=store, project=project) altsrcs = {x.id: x.data for x in altsrcs} sources = { altsrcs[x]['language_code']: altsrcs[x]['target'] for x in altsrcs } sources[src_lang.code] = unit.source suggestions_dict = { x.id: dict(id=x.id, target=x.target.strings) for x in unit.get_suggestions() } assert result["is_obsolete"] is False assert result["sources"] == sources assert response.context["unit"] == unit assert response.context["priority"] == store.priority assert response.context["store"] == store assert response.context["filetype"] == filetype assert response.context["directory"] == directory assert response.context["project"] == project assert response.context["language"] == language assert response.context["special_characters"] == special_characters assert response.context["source_language"] == src_lang assert response.context["altsrcs"] == altsrcs assert response.context["suggestions_dict"] == suggestions_dict assert response.context["cantranslate"] == check_user_permission( user, "translate", directory) assert response.context["cansuggest"] == check_user_permission( user, "suggest", directory) assert response.context["canreview"] == check_user_permission( user, "review", directory) assert response.context["has_admin_access"] == check_user_permission( user, "administrate", directory)
def test_get_edit_unit(project0_nongnu, get_edit_unit, client, request_users, settings): user = request_users["user"] if user.username != "nobody": client.login( username=user.username, password=request_users["password"]) unit = get_edit_unit store = unit.store filetype = unit.store.filetype.name directory = store.parent translation_project = store.translation_project project = translation_project.project language = translation_project.language response = client.get( "/xhr/units/%s/edit/" % unit.id, HTTP_X_REQUESTED_WITH='XMLHttpRequest') request = response.wsgi_request result = json.loads(response.content) special_characters = [] for specialchar in language.specialchars: code = ord(specialchar) special_characters.append({ 'display': CHARACTERS_NAMES.get(code, specialchar), 'code': code, 'hex_code': "U+" + hex(code)[2:].upper(), 'name': unicodedata.name(specialchar, ''), }) src_lang = unit.store.translation_project.project.source_language alt_src_langs = get_alt_src_langs(request, user, translation_project) altsrcs = find_altsrcs(unit, alt_src_langs, store=store, project=project) altsrcs = {x.id: x.data for x in altsrcs} sources = {altsrcs[x]['language_code']: altsrcs[x]['target'] for x in altsrcs} sources[src_lang.code] = unit.source suggestions_dict = {x.id: dict(id=x.id, target=x.target.strings) for x in unit.get_suggestions()} assert result["is_obsolete"] is False assert result["sources"] == sources assert response.context["unit"] == unit assert response.context["priority"] == store.priority assert response.context["store"] == store assert response.context["filetype"] == filetype assert response.context["directory"] == directory assert response.context["project"] == project assert response.context["language"] == language assert response.context["special_characters"] == special_characters assert response.context["source_language"] == src_lang assert response.context["altsrcs"] == altsrcs assert response.context["suggestions_dict"] == suggestions_dict assert response.context["cantranslate"] == check_user_permission( user, "translate", directory) assert response.context["cansuggest"] == check_user_permission( user, "suggest", directory) assert response.context["canreview"] == check_user_permission( user, "review", directory) assert response.context["has_admin_access"] == check_user_permission( user, "administrate", directory)
def set_accept_lang_and_get_altsrclangs(lang_code): client_get_kwargs['HTTP_ACCEPT_LANGUAGE'] = lang_code request = client.get(**client_get_kwargs).wsgi_request return get_alt_src_langs(request, user, tp)
def test_get_altsrclangs(request_users, language0, get_edit_unit, client): user = request_users["user"] if user.username == "nobody": do_test_get_altsrclangs_nobody(user, language0, get_edit_unit, client) return client.login(username=user.username, password=request_users["password"]) unit = get_edit_unit tp = unit.store.translation_project tp_lang = tp.language proj_source_lang = tp.project.source_language client_get_kwargs = { 'path': "/xhr/units/%s/edit/" % unit.id, 'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest', } request = client.get(**client_get_kwargs).wsgi_request # User has altsrclang different to TP or Project. user.alt_src_langs.clear() user.alt_src_langs.add(language0) alt_src_langs = get_alt_src_langs(request, user, tp) assert language0 in alt_src_langs # User altsrclang is TP language. user.alt_src_langs.clear() user.alt_src_langs.add(tp_lang) alt_src_langs = get_alt_src_langs(request, user, tp) assert alt_src_langs is None assert tp.project.translationproject_set.filter(language=tp_lang).exists() # User altsrclang is Project's source language. user.alt_src_langs.clear() user.alt_src_langs.add(proj_source_lang) prev_tp_lang = tp.language tp.language = proj_source_lang tp.save() alt_src_langs = get_alt_src_langs(request, user, tp) assert alt_src_langs is None assert tp.project.translationproject_set.filter( language=proj_source_lang).exists() tp.language = prev_tp_lang tp.save() # User has no altsrclangs and no HTTP_ACCEPT_LANGUAGE is provided. user.alt_src_langs.clear() alt_src_langs = get_alt_src_langs(request, user, tp) assert alt_src_langs is None # Test scenarios for HTTP_ACCEPT_LANGUAGE and no user's altsrclangs. user.alt_src_langs.clear() def set_accept_lang_and_get_altsrclangs(lang_code): client_get_kwargs['HTTP_ACCEPT_LANGUAGE'] = lang_code request = client.get(**client_get_kwargs).wsgi_request return get_alt_src_langs(request, user, tp) language0.code = "zz" language0.save() alt_src_langs = set_accept_lang_and_get_altsrclangs(language0.code) assert language0 in alt_src_langs alt_src_langs = set_accept_lang_and_get_altsrclangs('%s-COUNTRY' % language0.code) assert language0 in alt_src_langs alt_src_langs = set_accept_lang_and_get_altsrclangs(tp_lang.code) assert alt_src_langs is None alt_src_langs = set_accept_lang_and_get_altsrclangs(proj_source_lang.code) assert alt_src_langs is None alt_src_langs = set_accept_lang_and_get_altsrclangs('*') assert alt_src_langs is None alt_src_langs = set_accept_lang_and_get_altsrclangs('templates') assert alt_src_langs is None alt_src_langs = set_accept_lang_and_get_altsrclangs('en') assert alt_src_langs is None alt_src_langs = set_accept_lang_and_get_altsrclangs('en_US') assert alt_src_langs is None alt_src_langs = set_accept_lang_and_get_altsrclangs('DOES_NOT_EXIST') assert alt_src_langs is None