import re from django.conf import settings def _phone_tel(phone: str) -> str: digits = re.sub(r"[^\d+]", "", phone or "") return digits def site_branding(request): phone = settings.CONTACT_PHONE or "" public_site_url = (getattr(settings, "PUBLIC_SITE_URL", None) or "").rstrip("/") if not public_site_url and getattr(request, "build_absolute_uri", None): public_site_url = request.build_absolute_uri("/").rstrip("/") return { "SITE_NAME": settings.SITE_NAME, "SITE_TAGLINE": settings.SITE_TAGLINE, "PUBLIC_SITE_URL": public_site_url, "CONTACT_PHONE": phone, "CONTACT_PHONE_TEL": _phone_tel(phone), "CONTACT_EMAIL": settings.CONTACT_EMAIL or "", "CONTACT_ADDRESS": getattr(settings, "CONTACT_ADDRESS", "") or "", "CONTACT_SERVICE_AREA": getattr( settings, "CONTACT_SERVICE_AREA", "", ), "CREDIT_NAME": getattr(settings, "CREDIT_NAME", "AI ML Operations, LLC"), "CREDIT_URL": getattr( settings, "CREDIT_URL", "https://aimloperations.com" ), "SITE_UNDER_CONSTRUCTION": settings.SITE_UNDER_CONSTRUCTION, } def shop_cart(request): from django.apps import apps as django_apps if not django_apps.is_installed("shop"): return {"cart_count": 0} session = getattr(request, "session", None) if session is None: return {"cart_count": 0} from shop.services import cart_lines lines = cart_lines(session) return {"cart_count": sum(line["quantity"] for line in lines)} def tianji_tracking(request): match = getattr(request, "resolver_match", None) url_name = getattr(match, "url_name", "") or "" namespace = getattr(match, "namespace", "") or "" full = f"{namespace}:{url_name}" if namespace else url_name nav_section = "" if full == "dashboard:home": nav_section = "dashboard" elif namespace == "leads": nav_section = "leads" elif full == "analytics:report": nav_section = "analytics" elif namespace == "contacts": nav_section = "contacts" elif full == "directmail:postcard_designer": nav_section = "postcard" elif namespace == "email_sms": nav_section = "campaigns" elif namespace == "directmail": nav_section = "directmail" elif namespace == "blog": nav_section = "blog" elif namespace == "payments": nav_section = "payments" elif full == "social:account_list": nav_section = "social_accounts" elif namespace == "social": nav_section = "social" elif namespace == "shop": nav_section = "shop" return { "tianji_enabled": getattr(settings, "TIANJI_ENABLED", False) and bool(getattr(settings, "TIANJI_WEBSITE_ID", "")) and bool(getattr(settings, "TIANJI_TRACKER_URL", "")), "tianji_tracker_url": getattr( settings, "TIANJI_TRACKER_URL", "https://tianji.aimloperations.com/tracker.js", ), "tianji_website_id": getattr(settings, "TIANJI_WEBSITE_ID", ""), "page_name": url_name, "nav_section": nav_section, }