示例#1
0
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
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
 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)
示例#8
0
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