""" Context processors for SEO and site-wide data. """ from django.conf import settings from reports.models import SiteSettings def seo_context(request): """ Provides SEO-related context variables for all templates. """ site_url = request.build_absolute_uri('/').rstrip('/') # Get site settings site_settings = SiteSettings.get_settings() # Default SEO values default_seo = { 'site_name': 'Портал за Докладване на Измами', 'site_description': 'Портал за докладване на измами. Защита на гражданите от онлайн измами.', 'site_keywords': 'измами, киберпрестъпления, докладване измами, защита потребители, България, официален портал, анти-измами, сигурност онлайн', 'site_author': 'Официален Портал - Република България', 'site_language': 'bg', 'site_url': site_url, 'site_image': f'{site_url}/static/images/logo.svg', 'twitter_site': '@fraudplatformbg', 'twitter_creator': '@fraudplatformbg', } # Get page-specific SEO from view context if available page_seo = { 'page_title': getattr(request, 'seo_title', None), 'page_description': getattr(request, 'seo_description', None), 'page_keywords': getattr(request, 'seo_keywords', None), 'page_image': getattr(request, 'seo_image', None), 'page_type': getattr(request, 'seo_type', 'website'), 'canonical_url': getattr(request, 'canonical_url', request.build_absolute_uri()), } # Merge defaults with page-specific seo = {**default_seo, **{k: v for k, v in page_seo.items() if v}} # Build full title if seo.get('page_title'): seo['full_title'] = f"{seo['page_title']} | {seo['site_name']}" else: seo['full_title'] = seo['site_name'] # Use page image or default seo['og_image'] = seo.get('page_image') or seo['site_image'] return { 'seo': seo, 'site_settings': site_settings, } def email_settings(request): """ Provides email settings context (for use in settings if needed). """ from reports.models import SiteSettings site_settings = SiteSettings.get_settings() return { 'email_settings': { 'default_from_email': site_settings.default_from_email, 'contact_email': site_settings.contact_email, } }