Coverage for product_risk_suite / risk_assessment / admin.py: 91%
64 statements
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-13 23:42 +0000
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-13 23:42 +0000
1from django.contrib import admin
2from django.forms import SelectMultiple
3from django.db import models
4from django_summernote.widgets import SummernoteWidget
6from .models import *
8# fixtures
9class AssetAdmin(admin.ModelAdmin):
10 list_display = ["name"]
12class OriginAdmin(admin.ModelAdmin):
13 list_display = ["name"]
15class LiveCycleAdmin(admin.ModelAdmin):
16 list_display = ["name"]
18class SecurityRequirementAdmin(admin.ModelAdmin):
19 list_display = ["norm", "short", "description"]
20 prepopulated_fields = {"slug": ("norm_short", "description_short")}
22 @admin.display(description='Norm')
23 def norm(self, obj):
24 return obj.norm_short
26 @admin.display(description='Short')
27 def short(self, obj):
28 return obj.description_short
30 @admin.display(description='Description')
31 def description(self, obj):
32 return obj.description_long
34class StrideAdmin(admin.ModelAdmin):
35 list_display = ["stride"]
37 def stride(self, obj):
38 return obj.STRIDE_CHOICES[obj.name]
40admin.site.register(Asset, AssetAdmin)
41admin.site.register(Origin, OriginAdmin)
42admin.site.register(LiveCycle, LiveCycleAdmin)
43admin.site.register(SecurityRequirement, SecurityRequirementAdmin)
45# risks
46class RiskAdmin(admin.ModelAdmin):
47 formfield_overrides = {
48 models.TextField: { 'widget': SummernoteWidget()}
49 }
51 list_display = ["custom_id", "asset", "live_cycle", "origin", "stride_str", "title", "description"]
53 @admin.display(description='Threat (Stride)')
54 def stride_str(self, obj):
55 return obj.stride_str
58class RiskMitigationAdmin(admin.ModelAdmin):
59 filter_horizontal = ['security_requirements']
60 formfield_overrides = {
61 models.TextField: { 'widget': SummernoteWidget()}
62 }
64 list_display = ["title", "mitigation", "rational"]
66class RiskRatingAdmin(admin.ModelAdmin):
67 list_display = ["risk_str"]
68 ordering = ['likelihood_of_occurrence', 'severity_of_impact']
70 def risk_str(self, obj):
71 return str(obj)
73class EvidenceAdmin(admin.ModelAdmin):
74 ordering = ['status','evidence']
76admin.site.register(Risk, RiskAdmin)
77admin.site.register(RiskMitigation, RiskMitigationAdmin)
78admin.site.register(RiskRating, RiskRatingAdmin)
79admin.site.register(Evidence, EvidenceAdmin)
81# examples
82class SeverityExampleAdmin(admin.ModelAdmin):
83 formfield_overrides = {
84 models.TextField: { 'widget': SummernoteWidget()}
85 }
86 ordering = ['severity_of_impact']
88class LikelihoodExampleAdmin(admin.ModelAdmin):
89 formfield_overrides = {
90 models.TextField: { 'widget': SummernoteWidget()}
91 }
92 ordering = ['likelihood_of_occurrence']
94admin.site.register(SeverityExample, SeverityExampleAdmin)
95admin.site.register(LikelihoodExample, LikelihoodExampleAdmin)
97class SuggestedMitigationValidationAdmin(admin.ModelAdmin):
98 formfield_overrides = {
99 models.TextField: { 'widget': SummernoteWidget(attrs={'summernote': {'height': '200px'}})}
100 }
101 ordering = ['suggested_mitigation']
103admin.site.register(SuggestedMitigationValidation, SuggestedMitigationValidationAdmin)