mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
import logging
|
|
|
|
from django.conf import settings
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
from django.shortcuts import render
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.views.generic.base import View
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class NightModeRedirectView(View):
|
|
SESSION_VAR = "NIGHT_MODE"
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
request.session[self.SESSION_VAR] = not self.night_mode_state(request)
|
|
if not request.user.is_anonymous:
|
|
try:
|
|
request.user.profile.night_mode = request.session[self.SESSION_VAR]
|
|
request.user.profile.save()
|
|
except Exception as e:
|
|
logger.exception(e)
|
|
|
|
return HttpResponseRedirect(request.GET.get("next", "/"))
|
|
|
|
@classmethod
|
|
def night_mode_state(cls, request):
|
|
try:
|
|
return request.session.get(cls.SESSION_VAR, False)
|
|
except AttributeError:
|
|
# Session is middleware
|
|
# Sometimes request wont have a session attribute
|
|
return False
|
|
|
|
|
|
class ThemeRedirectView(View):
|
|
THEME_VAR = "THEME"
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
theme = request.POST.get('theme', settings.DEFAULT_THEME)
|
|
if not request.user.is_anonymous:
|
|
try:
|
|
request.user.profile.theme = theme
|
|
request.user.profile.save()
|
|
request.session[self.THEME_VAR] = theme
|
|
except Exception as e:
|
|
logger.exception(e)
|
|
|
|
return HttpResponseRedirect(request.GET.get("next", "/"))
|
|
|
|
|
|
# TODO: error views should be renamed to a proper function name when possible
|
|
|
|
def Generic400Redirect(request, *args, **kwargs):
|
|
title = _("Bad Request")
|
|
message = _(
|
|
"Auth encountered an error processing your request, please try again. "
|
|
"If the error persists, please contact the administrators."
|
|
)
|
|
response = _build_error_response(request, title, message, 400)
|
|
return response
|
|
|
|
|
|
def Generic403Redirect(request, *args, **kwargs):
|
|
title = _("Permission Denied")
|
|
message = _(
|
|
"You do not have permission to access the requested page. "
|
|
"If you believe this is in error please contact the administrators."
|
|
)
|
|
response = _build_error_response(request, title, message, 403)
|
|
return response
|
|
|
|
|
|
def Generic404Redirect(request, *args, **kwargs):
|
|
title = _("Page Not Found")
|
|
message = _(
|
|
"Page does not exist. "
|
|
"If you believe this is in error please contact the administrators. "
|
|
)
|
|
response = _build_error_response(request, title, message, 404)
|
|
return response
|
|
|
|
|
|
def Generic500Redirect(request, *args, **kwargs):
|
|
title = _("Internal Server Error")
|
|
message = _(
|
|
"Auth encountered an error processing your request, please try again. "
|
|
"If the error persists, please contact the administrators."
|
|
)
|
|
response = _build_error_response(request, title, message, 500)
|
|
return response
|
|
|
|
|
|
def _build_error_response(request, title, message, status_code) -> HttpResponse:
|
|
context = {"error_title": title, "error_message": message}
|
|
response = render(request, "allianceauth/error.html", context)
|
|
response.status_code = status_code
|
|
return response
|