Exemplo n.º 1
0
def get_page_choices(lang=None):
    from django.core.cache import cache
    lang = lang or i18n.get_current_language()
    page_choices = cache.get(_page_cache_key(lang))
    if page_choices is None:
        page_choices = update_site_and_page_choices(lang)[1]
    return page_choices
Exemplo n.º 2
0
def get_page_choices(lang=None):
    from django.core.cache import cache
    lang = lang or i18n.get_current_language()
    page_choices = cache.get(_page_cache_key(lang))
    if page_choices is None:
        site_choices, page_choices = update_site_and_page_choices(lang)
    return page_choices
Exemplo n.º 3
0
def update_site_and_page_choices(lang=None):
    lang = lang or i18n.get_current_language()
    SITE_CHOICES_KEY = _site_cache_key(lang)
    PAGE_CHOICES_KEY = _page_cache_key(lang)
    title_queryset = (Title.objects.drafts()
                      .select_related('page', 'page__site')
                      .order_by('page__path'))
    pages = defaultdict(OrderedDict)
    sites = {}
    for title in title_queryset:
        page = pages[title.page.site.pk].get(title.page.pk, {})
        page[title.language] = title
        pages[title.page.site.pk][title.page.pk] = page
        sites[title.page.site.pk] = title.page.site.name

    site_choices = []
    page_choices = [('', '----')]

    try:
        fallbacks = i18n.get_fallback_languages(lang)
    except LanguageError:
        fallbacks = []
    language_order = [lang] + fallbacks

    for sitepk, sitename in sites.items():
        site_choices.append((sitepk, sitename))

        site_page_choices = []
        for titles in pages[sitepk].values():
            title = None
            for language in language_order:
                title = titles.get(language)
                if title:
                    break
            if not title:
                continue

            indent = u"  " * (title.page.depth - 1)
            page_title = mark_safe(u"%s%s" % (indent, escape(title.title)))
            site_page_choices.append((title.page.pk, page_title))

        page_choices.append((sitename, site_page_choices))
    from django.core.cache import cache
    # We set it to 1 day here because we actively invalidate this cache.
    cache.set(SITE_CHOICES_KEY, site_choices, 86400)
    cache.set(PAGE_CHOICES_KEY, page_choices, 86400)
    return site_choices, page_choices
Exemplo n.º 4
0
Arquivo: utils.py Projeto: nuaays/Lib
def update_site_and_page_choices(lang=None):
    lang = lang or i18n.get_current_language()
    SITE_CHOICES_KEY = _site_cache_key(lang)
    PAGE_CHOICES_KEY = _page_cache_key(lang)
    title_queryset = (Title.objects.drafts()
                      .select_related('page', 'page__site')
                      .order_by('page__path'))
    pages = defaultdict(SortedDict)
    sites = {}
    for title in title_queryset:
        page = pages[title.page.site.pk].get(title.page.pk, {})
        page[title.language] = title
        pages[title.page.site.pk][title.page.pk] = page
        sites[title.page.site.pk] = title.page.site.name

    site_choices = []
    page_choices = [('', '----')]

    try:
        fallbacks = i18n.get_fallback_languages(lang)
    except LanguageError:
        fallbacks = []
    language_order = [lang] + fallbacks

    for sitepk, sitename in sites.items():
        site_choices.append((sitepk, sitename))

        site_page_choices = []
        for titles in pages[sitepk].values():
            title = None
            for language in language_order:
                title = titles.get(language)
                if title:
                    break
            if not title:
                continue

            indent = u"  " * (title.page.depth - 1)
            page_title = mark_safe(u"%s%s" % (indent, title.title))
            site_page_choices.append((title.page.pk, page_title))

        page_choices.append((sitename, site_page_choices))
    from django.core.cache import cache
    # We set it to 1 day here because we actively invalidate this cache.
    cache.set(SITE_CHOICES_KEY, site_choices, 86400)
    cache.set(PAGE_CHOICES_KEY, page_choices, 86400)
    return site_choices, page_choices
Exemplo n.º 5
0
def update_site_and_page_choices(language=None):
    if language is None:
        language = i18n.get_current_language()

    site_choices = []
    page_choices = [('', '----')]
    site_choices_key = _site_cache_key(language)
    page_choices_key = _page_cache_key(language)

    for site in get_sites():
        _page_choices = list(get_page_choices_for_site(site, language))
        site_choices.append((site.pk, site.name))
        page_choices.append((site.name, _page_choices))

    from django.core.cache import cache
    # We set it to 1 day here because we actively invalidate this cache.
    cache.set(site_choices_key, site_choices, 86400)
    cache.set(page_choices_key, page_choices, 86400)
    return site_choices, page_choices