From 6dc6b07f6729436e1b0a38a9a28873e882596604 Mon Sep 17 00:00:00 2001 From: Joshua Laymon Date: Sat, 6 Sep 2025 02:48:26 +0000 Subject: [PATCH] Update web/core/context_processors.py --- web/core/context_processors.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/web/core/context_processors.py b/web/core/context_processors.py index 5e3f4ad..0884840 100644 --- a/web/core/context_processors.py +++ b/web/core/context_processors.py @@ -1,5 +1,7 @@ from pathlib import Path from .models_ann import Announcement, AnnouncementDismissal +from django.contrib.staticfiles import finders +import os def app_version(request): version_file = Path(__file__).resolve().parent.parent / "version.txt" @@ -10,7 +12,19 @@ def app_version(request): version = "v0.0.0" return {"APP_VERSION": version} - +def available_themes(request): + """Returns ['midnight','dawn','forest','sandstone', ...] by scanning /static/themes/*.css""" + names = [] + # Find the absolute path for the 'themes' directory via staticfiles finders + # We look for any 'themes' folder that exists and aggregate CSS files. + for finder in finders.get_finders(): + for path, storage in finder.list(['themes']): + if path.startswith('themes/') and path.endswith('.css'): + base = os.path.basename(path)[:-4] # strip .css + names.append(base) + # stable order + names = sorted(set(names)) + return {'available_themes': names} def pending_announcement(request): """