42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from django.db.models import Prefetch
|
|
|
|
from apps.core.models import SiteBranding, SiteContact
|
|
from apps.pages.models import CustomPage
|
|
from apps.products.models import MainProduct, SubProduct
|
|
|
|
|
|
def site_branding(request):
|
|
return {"site_branding": SiteBranding.load()}
|
|
|
|
|
|
def site_contact(request):
|
|
return {"site_contact": SiteContact.load()}
|
|
|
|
|
|
def navigation(request):
|
|
main_products = (
|
|
MainProduct.objects.filter(is_active=True)
|
|
.prefetch_related(
|
|
Prefetch(
|
|
"sub_products",
|
|
queryset=SubProduct.objects.filter(is_active=True).order_by(
|
|
"order", "name"
|
|
),
|
|
)
|
|
)
|
|
.order_by("order", "name")
|
|
)
|
|
all_footer_products = list(main_products[:5])
|
|
footer_main_products = all_footer_products[:4]
|
|
footer_main_products_has_more = len(all_footer_products) == 5
|
|
nav_custom_pages = CustomPage.objects.filter(
|
|
is_published=True,
|
|
show_in_nav=True,
|
|
).order_by("menu_order", "title")
|
|
return {
|
|
"nav_main_products": main_products,
|
|
"nav_custom_pages": nav_custom_pages,
|
|
"footer_main_products": footer_main_products,
|
|
"footer_main_products_has_more": footer_main_products_has_more,
|
|
}
|