team-3/src/c3nav/site/context_processors.py
2024-09-16 21:27:46 +02:00

67 lines
1.9 KiB
Python

import json
import os
from django.conf import settings
from django.core.serializers.json import DjangoJSONEncoder
from c3nav.site.finders import favicon_package_files, logo_paths
logos_result = {
prefix: os.path.join(prefix, os.path.basename(path)) if path else None
for prefix, path in logo_paths.items()
}
if settings.FAVICON_PACKAGE:
logos_result['favicon_package'] = {
'.'.join(file.split('.')[:-1]): os.path.join('favicon_package', file)
for file in favicon_package_files
}
else:
logos_result['favicon_package'] = None
def logos(request):
return logos_result
def user_data_json(request):
return {
'user_data_json': lambda: json.dumps(dict(request.user_data), separators=(',', ':'), cls=DjangoJSONEncoder),
}
def header_logo_mask(request):
return {
'header_logo_mask_mode': settings.HEADER_LOGO_MASK_MODE,
}
def theme(request):
from c3nav.site.themes import css_themes_all, css_themes_public
if request.user_permissions.nonpublic_themes:
themes = css_themes_all()
else:
themes = css_themes_public()
default_theme_id = settings.DEFAULT_THEME if settings.DEFAULT_THEME in themes else 0
active_theme_id = request.session.get('theme', default_theme_id)
if active_theme_id not in themes:
active_theme_id = default_theme_id
active_theme = themes[active_theme_id]
if active_theme['randomize_primary_color']:
from c3nav.site.themes import get_random_primary_color
primary_color = get_random_primary_color(request)
else:
primary_color = active_theme['primary_color']
return {
'active_theme_id': active_theme_id,
'active_theme': active_theme,
'themes': themes,
'randomize_primary_color': active_theme['randomize_primary_color'],
'primary_color': primary_color,
'branding': settings.BRANDING,
'app_enabled': settings.APP_ENABLED,
}