from django.core.exceptions import DisallowedHost, PermissionDenied, SuspiciousOperation
from django.http import (
    Http404,
    HttpResponse,
    HttpResponseRedirect,
    HttpResponseServerError,
)
from django.http.multipartparser import MultiPartParserError


def innocent(request):
    return HttpResponse("innocent")


def redirect(request):
    return HttpResponseRedirect("/")


def suspicious(request):
    raise SuspiciousOperation("dubious")


def suspicious_spec(request):
    raise DisallowedHost("dubious")


class UncaughtException(Exception):
    pass


def uncaught_exception(request):
    raise UncaughtException("Uncaught exception")


def internal_server_error(request):
    status = request.GET.get("status", 500)
    return HttpResponseServerError("Server Error", status=int(status))


def permission_denied(request):
    raise PermissionDenied()


def multi_part_parser_error(request):
    raise MultiPartParserError("parsing error")


def does_not_exist_raised(request):
    raise Http404("Not Found")