File: views.py

package info (click to toggle)
python-django 3%3A6.0~alpha1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 62,204 kB
  • sloc: python: 370,694; javascript: 19,376; xml: 211; makefile: 187; sh: 28
file content (87 lines) | stat: -rw-r--r-- 1,927 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import json
import sys

from django.http import HttpResponse
from django.middleware.csp import get_nonce
from django.utils.csp import CSP
from django.utils.decorators import method_decorator
from django.views.debug import technical_500_response
from django.views.decorators.common import no_append_slash
from django.views.decorators.csp import csp_override, csp_report_only_override
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import View


def empty_view(request, *args, **kwargs):
    return HttpResponse()


@no_append_slash
def sensitive_fbv(request, *args, **kwargs):
    return HttpResponse()


@method_decorator(no_append_slash, name="dispatch")
class SensitiveCBV(View):
    def get(self, *args, **kwargs):
        return HttpResponse()


def csp_nonce(request):
    return HttpResponse(get_nonce(request))


@csp_override({})
def csp_disabled_enforced(request):
    return HttpResponse()


@csp_report_only_override({})
def csp_disabled_ro(request):
    return HttpResponse()


@csp_override({})
@csp_report_only_override({})
def csp_disabled_both(request):
    return HttpResponse()


csp_policy_override = {
    "default-src": [CSP.SELF],
    "img-src": [CSP.SELF, "data:"],
}


@csp_override(csp_policy_override)
def csp_override_enforced(request):
    return HttpResponse()


@csp_report_only_override(csp_policy_override)
def csp_override_report_only(request):
    return HttpResponse()


@csp_override(csp_policy_override)
@csp_report_only_override(csp_policy_override)
def csp_override_both(request):
    return HttpResponse()


def csp_500(request):
    try:
        raise Exception
    except Exception:
        return technical_500_response(request, *sys.exc_info())


csp_reports = []


@csrf_exempt
def csp_report_view(request):
    if request.method == "POST":
        data = json.loads(request.body)
        csp_reports.append(data)
    return HttpResponse(status=204)