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

1from django.contrib import admin 

2from django.forms import SelectMultiple 

3from django.db import models 

4from django_summernote.widgets import SummernoteWidget 

5 

6from .models import * 

7 

8# fixtures 

9class AssetAdmin(admin.ModelAdmin): 

10 list_display = ["name"] 

11 

12class OriginAdmin(admin.ModelAdmin): 

13 list_display = ["name"] 

14 

15class LiveCycleAdmin(admin.ModelAdmin): 

16 list_display = ["name"] 

17 

18class SecurityRequirementAdmin(admin.ModelAdmin): 

19 list_display = ["norm", "short", "description"] 

20 prepopulated_fields = {"slug": ("norm_short", "description_short")} 

21 

22 @admin.display(description='Norm') 

23 def norm(self, obj): 

24 return obj.norm_short 

25 

26 @admin.display(description='Short') 

27 def short(self, obj): 

28 return obj.description_short 

29 

30 @admin.display(description='Description') 

31 def description(self, obj): 

32 return obj.description_long 

33 

34class StrideAdmin(admin.ModelAdmin): 

35 list_display = ["stride"] 

36 

37 def stride(self, obj): 

38 return obj.STRIDE_CHOICES[obj.name] 

39 

40admin.site.register(Asset, AssetAdmin) 

41admin.site.register(Origin, OriginAdmin) 

42admin.site.register(LiveCycle, LiveCycleAdmin) 

43admin.site.register(SecurityRequirement, SecurityRequirementAdmin) 

44 

45# risks 

46class RiskAdmin(admin.ModelAdmin): 

47 formfield_overrides = { 

48 models.TextField: { 'widget': SummernoteWidget()} 

49 } 

50 

51 list_display = ["custom_id", "asset", "live_cycle", "origin", "stride_str", "title", "description"] 

52 

53 @admin.display(description='Threat (Stride)') 

54 def stride_str(self, obj): 

55 return obj.stride_str 

56 

57 

58class RiskMitigationAdmin(admin.ModelAdmin): 

59 filter_horizontal = ['security_requirements'] 

60 formfield_overrides = { 

61 models.TextField: { 'widget': SummernoteWidget()} 

62 } 

63 

64 list_display = ["title", "mitigation", "rational"] 

65 

66class RiskRatingAdmin(admin.ModelAdmin): 

67 list_display = ["risk_str"] 

68 ordering = ['likelihood_of_occurrence', 'severity_of_impact'] 

69 

70 def risk_str(self, obj): 

71 return str(obj) 

72 

73class EvidenceAdmin(admin.ModelAdmin): 

74 ordering = ['status','evidence'] 

75 

76admin.site.register(Risk, RiskAdmin) 

77admin.site.register(RiskMitigation, RiskMitigationAdmin) 

78admin.site.register(RiskRating, RiskRatingAdmin) 

79admin.site.register(Evidence, EvidenceAdmin) 

80 

81# examples 

82class SeverityExampleAdmin(admin.ModelAdmin): 

83 formfield_overrides = { 

84 models.TextField: { 'widget': SummernoteWidget()} 

85 } 

86 ordering = ['severity_of_impact'] 

87 

88class LikelihoodExampleAdmin(admin.ModelAdmin): 

89 formfield_overrides = { 

90 models.TextField: { 'widget': SummernoteWidget()} 

91 } 

92 ordering = ['likelihood_of_occurrence'] 

93 

94admin.site.register(SeverityExample, SeverityExampleAdmin) 

95admin.site.register(LikelihoodExample, LikelihoodExampleAdmin) 

96 

97class SuggestedMitigationValidationAdmin(admin.ModelAdmin): 

98 formfield_overrides = { 

99 models.TextField: { 'widget': SummernoteWidget(attrs={'summernote': {'height': '200px'}})} 

100 } 

101 ordering = ['suggested_mitigation'] 

102 

103admin.site.register(SuggestedMitigationValidation, SuggestedMitigationValidationAdmin)