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
|
from django.contrib.auth.decorators import login_required, permission_required
from django.http import JsonResponse
from django.shortcuts import get_object_or_404, render
from django.views.decorators.cache import never_cache
from markdown import markdown
from releases.models import Release
from .models import (
BugFixRelease,
FeatureRelease,
PreRelease,
SecurityIssue,
SecurityRelease,
)
@never_cache
def render_checklist(request, instance):
raw_markdown = instance.render_to_string(request=request)
markdown_content = markdown(
raw_markdown,
output_format="html",
extensions=[
"pymdownx.extra",
"pymdownx.tasklist",
"pymdownx.superfences",
"pymdownx.magiclink",
],
extension_configs={
"pymdownx.tasklist": {
"custom_checkbox": True,
"clickable_checkbox": True,
},
},
)
return render(
request,
"checklists/checklist_detail.html",
{
"instance": instance,
"markdown": markdown_content,
"raw_markdown": raw_markdown,
},
)
@never_cache
def release_checklist(request, version):
release = get_object_or_404(Release, version=version)
if release.is_pre_release:
checklist_model = PreRelease
elif release.is_dot_zero:
checklist_model = FeatureRelease
else:
checklist_model = BugFixRelease
instance = get_object_or_404(checklist_model, release__version=version)
return render_checklist(request, instance)
@never_cache
@login_required
@permission_required(
["checklists.view_securityrelease", "checklists.view_securityissue"],
raise_exception=True,
)
def securityrelease_checklist(request, pk):
instance = get_object_or_404(SecurityRelease, pk=pk)
return render_checklist(request, instance)
@never_cache
@login_required
@permission_required("checklists.view_securityissue", raise_exception=True)
def cve_json_record(request, cve_id):
issue = get_object_or_404(SecurityIssue, cve_year_number=cve_id)
response = JsonResponse(issue.cve_data)
response["Content-Disposition"] = f'inline; filename="{cve_id}.json"'
return response
|