'theme_switcher,' 'theme-picker' & 'theme' renamed everywhere to simply 'palette'; new urls & views & their corresponding ITs ensure applet menu checkbox functionality

This commit is contained in:
Disco DeDisco
2026-03-05 14:45:55 -05:00
parent ca835059c2
commit c099479740
16 changed files with 154 additions and 85 deletions

View File

@@ -1,18 +1,18 @@
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseForbidden
from django.http import HttpResponse, HttpResponseForbidden
from django.shortcuts import redirect, render
from .forms import ExistingListItemForm, ItemForm
from .models import Item, List
from apps.dashboard.forms import ExistingListItemForm, ItemForm
from apps.dashboard.models import Applet, Item, List, UserApplet
from apps.lyric.models import User
UNLOCKED_THEMES = frozenset(["theme-default"])
THEMES = [
{"name": "theme-default", "label": "Earthman", "locked": False},
{"name": "theme-nirvana", "label": "Nirvana", "locked": True},
{"name": "theme-sheol", "label": "Sheol", "locked": True},
UNLOCKED_PALETTES = frozenset(["palette-default"])
PALETTES = [
{"name": "palette-default", "label": "Earthman", "locked": False},
{"name": "palette-nirvana", "label": "Nirvana", "locked": True},
{"name": "palette-sheol", "label": "Sheol", "locked": True},
]
@@ -20,7 +20,7 @@ def home_page(request):
return render(
request, "apps/dashboard/home.html", {
"form": ItemForm(),
"themes": THEMES,
"palettes": PALETTES,
})
def new_list(request):
@@ -74,12 +74,12 @@ def share_list(request, list_id):
return redirect(our_list)
@login_required(login_url="/")
def set_theme(request):
def set_palette(request):
if request.method == "POST":
theme = request.POST.get("theme", "")
if theme in UNLOCKED_THEMES:
request.user.theme = theme
request.user.save(update_fields=["theme"])
palette = request.POST.get("palette", "")
if palette in UNLOCKED_PALETTES:
request.user.palette = palette
request.user.save(update_fields=["palette"])
return redirect("home")
@login_required(login_url="/")
@@ -89,3 +89,16 @@ def set_profile(request):
request.user.username = username
request.user.save(update_fields=["username"])
return redirect("/")
@login_required(login_url="/")
def toggle_applets(request):
checked = request.POST.getlist("applets")
for applet in Applet.objects.all():
UserApplet.objects.update_or_create(
user=request.user,
applet=applet,
defaults={"visible": applet.slug in checked},
)
if request.headers.get("HX-Request"):
return HttpResponse("")
return redirect("home")