Update web/core/views.py

This commit is contained in:
Joshua Laymon 2025-08-24 19:17:49 +00:00
parent 11911edeee
commit 28009ce6ae

View File

@ -960,3 +960,43 @@ def delete_all_entries(request):
return redirect("settings_home") return redirect("settings_home")
return render(request, "settings/delete_all_confirm.html", {}) return render(request, "settings/delete_all_confirm.html", {})
# ----- Release announcements (superuser tools + dismiss) -----
from django.contrib.auth.decorators import login_required, user_passes_test
from django.views.decorators.http import require_POST
from django.http import JsonResponse, HttpResponseBadRequest
from .forms import AnnouncementForm
from .models_ann import Announcement, AnnouncementDismissal
is_superuser = user_passes_test(lambda u: u.is_superuser)
@is_superuser
@login_required
def announcement_tools(request):
"""
Superuser-only: publish an announcement. Users will see it once on next search page load.
"""
if request.method == "POST":
form = AnnouncementForm(request.POST)
if form.is_valid():
ann = form.save(commit=False)
ann.created_by = request.user
ann.save()
messages.success(request, "Announcement published.")
return redirect("settings_home")
else:
form = AnnouncementForm()
recent = Announcement.objects.order_by("-created_at")[:25]
return render(request, "settings/home.html", {
"announcement_form": form,
"announcements_recent": recent,
# Keep the rest of your settings page content intact; template guards will show this block
})
@login_required
@require_POST
def dismiss_announcement(request, pk):
ann = get_object_or_404(Announcement, pk=pk)
AnnouncementDismissal.objects.get_or_create(user=request.user, announcement=ann)
return JsonResponse({"ok": True})