from django.core.cache import cache
from django.utils import timezone

from .models import Page, SiteSettings


def site(request):
    """Données communes à toutes les pages (paramètres, menu, flash infos)."""
    ctx = {"site": SiteSettings.load(), "now": timezone.now()}
    if request.path.startswith("/admin/"):
        return ctx

    from apps.editorial.models import Article
    from apps.taxonomy.models import Category

    nav = cache.get("public.nav_categories")
    if nav is None:
        nav = list(Category.objects.in_menu())
        cache.set("public.nav_categories", nav, 60 * 10)
    flash = cache.get("public.flash_infos")
    if flash is None:
        flash = list(
            Article.objects.published().filter(est_flash_info=True).only("titre", "slug", "publie_le")[:10]
        )
        cache.set("public.flash_infos", flash, 60 * 2)
    ctx.update(
        nav_categories=nav,
        flash_infos=flash,
        footer_pages=Page.objects.filter(est_publiee=True, dans_footer=True),
    )
    return ctx
