Files
OSINT/fraud_platform/context_processors.py
Iliyan Angelov ed94dd22dd update
2025-11-26 22:32:20 +02:00

72 lines
2.5 KiB
Python

"""
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,
}
}