@@ -1505,10 +1505,10 @@ class Engagement(models.Model):
1505
1505
default = "threat_model" , editable = False )
1506
1506
tmodel_path = models .CharField (max_length = 1000 , default = "none" ,
1507
1507
editable = False , blank = True , null = True )
1508
- risk_acceptance = models .ManyToManyField ("Risk_Acceptance" ,
1509
- default = None ,
1510
- editable = False ,
1511
- blank = True )
1508
+ # risk_acceptance = models.ManyToManyField("Risk_Acceptance", # TODO: remove this
1509
+ # default=None,
1510
+ # editable=False,
1511
+ # blank=True)
1512
1512
done_testing = models .BooleanField (default = False , editable = False )
1513
1513
engagement_type = models .CharField (editable = True , max_length = 30 , default = "Interactive" ,
1514
1514
null = True ,
@@ -1550,7 +1550,7 @@ def copy(self):
1550
1550
old_notes = list (self .notes .all ())
1551
1551
old_files = list (self .files .all ())
1552
1552
old_tags = list (self .tags .all ())
1553
- old_risk_acceptances = list (self .risk_acceptance .all ())
1553
+ old_risk_acceptances = list (self .risk_acceptance .all ()) # TODO check this
1554
1554
old_tests = list (Test .objects .filter (engagement = self ))
1555
1555
# Save the object before setting any ManyToMany relationships
1556
1556
copy .save ()
@@ -1564,7 +1564,7 @@ def copy(self):
1564
1564
for test in old_tests :
1565
1565
test .copy (engagement = copy )
1566
1566
# Copy the risk_acceptances
1567
- for risk_acceptance in old_risk_acceptances :
1567
+ for risk_acceptance in old_risk_acceptances : # TODO check this
1568
1568
copy .risk_acceptance .add (risk_acceptance .copy (engagement = copy ))
1569
1569
# Assign any tags
1570
1570
copy .tags .set (old_tags )
@@ -1596,7 +1596,7 @@ def unaccepted_open_findings(self):
1596
1596
return findings
1597
1597
1598
1598
def accept_risks (self , accepted_risks ):
1599
- self .risk_acceptance .add (* accepted_risks )
1599
+ self .risk_acceptance .add (* accepted_risks ) # TODO check this
1600
1600
1601
1601
@property
1602
1602
def has_jira_issue (self ):
@@ -2164,7 +2164,7 @@ def unaccepted_open_findings(self):
2164
2164
return findings
2165
2165
2166
2166
def accept_risks (self , accepted_risks ):
2167
- self .engagement .risk_acceptance .add (* accepted_risks )
2167
+ self .engagement .risk_acceptance .add (* accepted_risks ) # TODO check this
2168
2168
2169
2169
@property
2170
2170
def deduplication_algorithm (self ):
@@ -3663,6 +3663,8 @@ class Risk_Acceptance(models.Model):
3663
3663
3664
3664
name = models .CharField (max_length = 300 , null = False , blank = False , help_text = _ ("Descriptive name which in the future may also be used to group risk acceptances together across engagements and products" ))
3665
3665
3666
+ engagement = models .ForeignKey (Engagement , editable = False , blank = False , null = False , on_delete = models .CASCADE )
3667
+
3666
3668
accepted_findings = models .ManyToManyField (Finding )
3667
3669
3668
3670
recommendation = models .CharField (choices = TREATMENT_CHOICES , max_length = 2 , null = False , default = TREATMENT_FIX , help_text = _ ("Recommendation from the security team." ), verbose_name = _ ("Security Recommendation" ))
@@ -3704,7 +3706,7 @@ def name_and_expiration_info(self):
3704
3706
return str (self .name ) + (" (expired " if self .is_expired else " (expires " ) + (timezone .localtime (self .expiration_date ).strftime ("%b %d, %Y" ) if self .expiration_date else "Never" ) + ")"
3705
3707
3706
3708
def get_breadcrumbs (self ):
3707
- bc = self .engagement_set .first ().get_breadcrumbs ()
3709
+ bc = self .engagement_set .first ().get_breadcrumbs () # TODO check this
3708
3710
bc += [{"title" : str (self ),
3709
3711
"url" : reverse ("view_risk_acceptance" , args = (
3710
3712
self .engagement_set .first ().product .id , self .id ))}]
@@ -3714,16 +3716,16 @@ def get_breadcrumbs(self):
3714
3716
def is_expired (self ):
3715
3717
return self .expiration_date_handled is not None
3716
3718
3717
- # relationship is many to many, but we use it as one-to-many
3718
- @property
3719
- def engagement (self ):
3720
- engs = self .engagement_set .all ()
3721
- if engs :
3722
- return engs [0 ]
3719
+ # # relationship is many to many, but we use it as one-to-many
3720
+ # @property
3721
+ # def engagement(self):
3722
+ # engs = self.engagement_set.all()
3723
+ # if engs:
3724
+ # return engs[0]
3723
3725
3724
- return None
3726
+ # return None
3725
3727
3726
- def copy (self , engagement = None ):
3728
+ def copy (self , engagement = None ): # TODO check this
3727
3729
copy = _copy_model_util (self )
3728
3730
# Save the necessary ManyToMany relationships
3729
3731
old_notes = list (self .notes .all ())
@@ -3734,7 +3736,7 @@ def copy(self, engagement=None):
3734
3736
for notes in old_notes :
3735
3737
copy .notes .add (notes .copy ())
3736
3738
# Assign any accepted findings
3737
- if engagement :
3739
+ if engagement : # TODO check this
3738
3740
new_accepted_findings = Finding .objects .filter (test__engagement = engagement , hash_code__in = old_accepted_findings_hash_codes , risk_accepted = True ).distinct ()
3739
3741
copy .accepted_findings .set (new_accepted_findings )
3740
3742
return copy
0 commit comments