Exemple #1
0
def get_metadata(app, docname):
    '''
    Extracts metadata from a document.
    '''
    env = app.builder.env
    language = app.config.language
    locale = Locale.parse(language) if language else Locale.default()
    format_ui_date = partial(
        format_date, format=UIStr.TIMESTAMP_FMT, locale=locale)
    format_short_ui_short = partial(
        format_date, format=UIStr.TIMESTAMP_FMT_SHORT, locale=locale)

    env.blog_metadata[docname] = Metadata()
    metadata = env.blog_metadata[docname]

    # if it's a page
    if docname.startswith("pages/"):
      metadata.is_page = True
      return

    # posts are identified by ($YEAR)/($MONTH)/($DAY) paths
    match = re.match(r"\d{4}/\d{2}/\d{2}/", docname)

    # if not post return
    if not match:
        return

    metadata.is_post = True
    metadata.link = docname
    metadata.date = datetime.datetime.strptime(match.group(), "%Y/%m/%d/")

    # we format date here instead of inside template due to localization issues
    # and Python2 vs Python3 incompatibility
    metadata.formatted_date = format_ui_date(metadata.date)
    metadata.formatted_date_short = format_short_ui_short(metadata.date)
Exemple #2
0
def get_currencies():
    """
    Returns a list of currencies.
    """
    return sorted(
        Locale.default().currencies.items(),
        key=operator.itemgetter(1)
    )
Exemple #3
0
def defaultLocale():
    try:
        lang, _ = locale.getdefaultlocale()
    except Exception:
        lang = None

    if lang is not None:
        return Locale.parse(lang)
    else:
        try:
            return Locale.default()
        except UnknownLocaleError:
            return Locale('en', 'US')
Exemple #4
0
def get_console_locale(env=None, lang=LANG):
    """Return negotiated locale for console by LANG environment and
    [trac] default_language."""
    if has_babel:
        from babel.core import Locale, UnknownLocaleError, parse_locale
        try:
            lang = '_'.join(filter(None, parse_locale(lang)))
        except:
            lang = None
        default = env.config.get('trac', 'default_language', '') \
                  if env else None
        try:
            return get_negotiated_locale([lang, default]) or Locale.default()
        except UnknownLocaleError:
            pass
    return None
Exemple #5
0
def get_console_locale(env=None, lang=LANG):
    """Return negotiated locale for console by LANG environment and
    [trac] default_language."""
    if has_babel:
        from babel.core import Locale, UnknownLocaleError, parse_locale
        try:
            lang = '_'.join(filter(None, parse_locale(lang)))
        except:
            lang = None
        default = env.config.get('trac', 'default_language', '') \
                  if env else None
        try:
            return get_negotiated_locale([lang, default]) or Locale.default()
        except UnknownLocaleError:
            pass
    return None
Exemple #6
0
def defaultLocale():
    try:
        lang, _ = locale.getdefaultlocale()
    except Exception:
        lang = None

    if lang is not None:
        try:
            return Locale.parse(lang)
        except UnknownLocaleError:
            pass
    else:
        try:
            return Locale.default()
        except UnknownLocaleError:
            return Locale('en', 'US')
Exemple #7
0
 def test_default(self, os_environ):
     for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LC_MESSAGES']:
         os_environ[name] = ''
     os_environ['LANG'] = 'fr_FR.UTF-8'
     default = Locale.default('LC_MESSAGES')
     assert (default.language, default.territory) == ('fr', 'FR')
Exemple #8
0
def test_can_return_default_locale(os_environ):
    os_environ['LC_MESSAGES'] = 'fr_FR.UTF-8'
    assert Locale('fr', 'FR') == Locale.default('LC_MESSAGES')
Exemple #9
0
def get_currencies():
    """
    Returns a list of currencies.
    """
    return sorted(Locale.default().currencies.items(),
                  key=operator.itemgetter(1))
Exemple #10
0
 def test_can_return_default_locale(self):
     os.environ['LC_MESSAGES'] = 'fr_FR.UTF-8'
     self.assertEqual(Locale('fr', 'FR'), Locale.default('LC_MESSAGES'))