from django.conf import settings from django.http import HttpResponseRedirect from django.shortcuts import render from django.utils.http import url_has_allowed_host_and_scheme from django.utils.translation import gettext_lazy as _ from django.views.decorators.http import require_POST from portal.accounts.decorators import admin_required, publisher_required from . import preferences @require_POST def set_preferences(request): """Store the chosen preferences in cookies (the no-JavaScript path of the profile menu).""" target = request.POST.get("next", "") if not (target.startswith("/") and url_has_allowed_host_and_scheme(target, None)): target = "/" response = HttpResponseRedirect(target) preferences.set_cookies( response, preferences.chosen(request.POST), secure=not settings.DEBUG ) return response def _placeholder(title): def view(request): return render(request, "shell/placeholder.html", {"title": title}) return view publish_announcements = publisher_required(_placeholder(_("Manage announcements"))) admin_appearance = admin_required(_placeholder(_("Appearance"))) admin_settings = admin_required(_placeholder(_("Settings"))) admin_audit = admin_required(_placeholder(_("Audit log"))) admin_status = admin_required(_placeholder(_("Status")))