예제 #1
0
파일: test_views.py 프로젝트: Sancus/basket
 def test_newsletter_languages(self):
     # newsletter_languages() returns the set of languages
     # of the newsletters
     # (Note that newsletter_languages() is not part of the external
     # API, but is used internally)
     models.Newsletter.objects.create(
         slug='slug',
         title='title',
         active=False,
         languages='en-US',
         vendor_id='VENDOR1',
     )
     models.Newsletter.objects.create(
         slug='slug2',
         title='title',
         active=False,
         languages='fr, de ',
         vendor_id='VENDOR2',
     )
     models.Newsletter.objects.create(
         slug='slug3',
         title='title',
         active=False,
         languages='en-US, fr',
         vendor_id='VENDOR3',
     )
     expect = set(['en-US', 'fr', 'de'])
     self.assertEqual(expect, newsletter_languages())
예제 #2
0
 def test_newsletter_languages(self):
     # newsletter_languages() returns the set of languages
     # of the newsletters
     # (Note that newsletter_languages() is not part of the external
     # API, but is used internally)
     models.Newsletter.objects.create(
         slug='slug',
         title='title',
         active=False,
         languages='en-US',
         vendor_id='VENDOR1',
     )
     models.Newsletter.objects.create(
         slug='slug2',
         title='title',
         active=False,
         languages='fr, de ',
         vendor_id='VENDOR2',
     )
     models.Newsletter.objects.create(
         slug='slug3',
         title='title',
         active=False,
         languages='en-US, fr',
         vendor_id='VENDOR3',
     )
     expect = set(['en-US', 'fr', 'de'])
     self.assertEqual(expect, newsletter_languages())
예제 #3
0
파일: utils.py 프로젝트: pmclanahan/basket
def get_accept_languages(header_value):
    """
    Parse the user's Accept-Language HTTP header and return a list of languages
    """
    # adapted from bedrock: http://j.mp/1o3pWo5
    languages = []
    pattern = re.compile(r'^([A-Za-z]{2,3})(?:-([A-Za-z]{2})(?:-[A-Za-z0-9]+)?)?$')

    # bug 1102652
    header_value = header_value.replace('_', '-')

    try:
        parsed = parse_accept_lang_header(header_value)
    except ValueError:  # see https://code.djangoproject.com/ticket/21078
        return languages

    for lang, priority in parsed:
        m = pattern.match(lang)

        if not m:
            continue

        lang = m.group(1).lower()

        # Check if the shorter code is supported. This covers obsolete long
        # codes like fr-FR (should match fr) or ja-JP (should match ja)
        if m.group(2) and lang not in newsletter_languages():
            lang += '-' + m.group(2).upper()

        if lang not in languages:
            languages.append(lang)

    return languages
예제 #4
0
def get_accept_languages(header_value):
    """
    Parse the user's Accept-Language HTTP header and return a list of languages
    """
    # adapted from bedrock: http://j.mp/1o3pWo5
    languages = []
    pattern = re.compile(
        r'^([A-Za-z]{2,3})(?:-([A-Za-z]{2})(?:-[A-Za-z0-9]+)?)?$')

    # bug 1102652
    header_value = header_value.replace('_', '-')

    try:
        parsed = parse_accept_lang_header(header_value)
    except ValueError:  # see https://code.djangoproject.com/ticket/21078
        return languages

    for lang, priority in parsed:
        m = pattern.match(lang)

        if not m:
            continue

        lang = m.group(1).lower()

        # Check if the shorter code is supported. This covers obsolete long
        # codes like fr-FR (should match fr) or ja-JP (should match ja)
        if m.group(2) and lang not in newsletter_languages():
            lang += '-' + m.group(2).upper()

        if lang not in languages:
            languages.append(lang)

    return languages
예제 #5
0
 def test_newsletter_languages(self):
     # newsletter_languages() returns the set of languages
     # of the newsletters
     # (Note that newsletter_languages() is not part of the external
     # API, but is used internally)
     models.Newsletter.objects.create(
         slug="slug", title="title", active=False, languages="en-US", vendor_id="VENDOR1"
     )
     models.Newsletter.objects.create(
         slug="slug2", title="title", active=False, languages="fr, de ", vendor_id="VENDOR2"
     )
     models.Newsletter.objects.create(
         slug="slug3", title="title", active=False, languages="en-US, fr", vendor_id="VENDOR3"
     )
     expect = set(["en-US", "fr", "de"])
     self.assertEqual(expect, newsletter_languages())
예제 #6
0
파일: utils.py 프로젝트: pmclanahan/basket
def get_best_language(languages):
    """
    Return the best language for use with our newsletters. If none match, return first in list.

    @param languages: list of language codes.
    @return: a single language code
    """
    if not languages:
        return None

    # try again with 2 letter languages
    languages_2l = [lang[:2] for lang in languages]
    supported_langs = newsletter_languages()

    for lang in chain(languages, languages_2l):
        if lang in supported_langs:
            return lang

    return languages[0]
예제 #7
0
def get_best_language(languages):
    """
    Return the best language for use with our newsletters. If none match, return first in list.

    @param languages: list of language codes.
    @return: a single language code
    """
    if not languages:
        return None

    # try again with 2 letter languages
    languages_2l = [lang[:2] for lang in languages]
    supported_langs = newsletter_languages()

    for lang in chain(languages, languages_2l):
        if lang in supported_langs:
            return lang

    return languages[0]