Skip to content

Commit f462a9d

Browse files
committed
feat(RiskAcc-Eng): Clean RiskAcc-Eng mapping + Allow correct handling by API
1 parent a39ff49 commit f462a9d

File tree

4 files changed

+63
-13
lines changed

4 files changed

+63
-13
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 5.1.8 on 2025-05-01 12:54
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('dojo', '0228_alter_jira_username_password'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='engagement',
16+
name='risk_acceptance',
17+
),
18+
migrations.AddField(
19+
model_name='risk_acceptance',
20+
name='engagement',
21+
field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='dojo.engagement'),
22+
),
23+
]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 5.1.8 on 2025-05-01 12:59
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
def set_engagement_based_on_findings(apps, schema_editor):
7+
# TODO
8+
pass
9+
10+
11+
class Migration(migrations.Migration):
12+
13+
dependencies = [
14+
('dojo', '0230_set_risk_acceptance_engagement'),
15+
]
16+
17+
operations = [
18+
migrations.RunPython(set_engagement_based_on_findings, migrations.RunPython.noop),
19+
]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 5.1.8 on 2025-05-01 12:59
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('dojo', '0229_remove_engagement_risk_acceptance_and_more'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='risk_acceptance',
16+
name='engagement',
17+
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='dojo.engagement'),
18+
),
19+
]

dojo/models.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,10 +1508,6 @@ class Engagement(models.Model):
15081508
default="threat_model", editable=False)
15091509
tmodel_path = models.CharField(max_length=1000, default="none",
15101510
editable=False, blank=True, null=True)
1511-
risk_acceptance = models.ManyToManyField("Risk_Acceptance",
1512-
default=None,
1513-
editable=False,
1514-
blank=True)
15151511
done_testing = models.BooleanField(default=False, editable=False)
15161512
engagement_type = models.CharField(editable=True, max_length=30, default="Interactive",
15171513
null=True,
@@ -3670,6 +3666,8 @@ class Risk_Acceptance(models.Model):
36703666

36713667
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"))
36723668

3669+
engagement = models.ForeignKey(Engagement, editable=False, blank=False, null=False, on_delete=models.CASCADE)
3670+
36733671
accepted_findings = models.ManyToManyField(Finding)
36743672

36753673
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"))
@@ -3721,15 +3719,6 @@ def get_breadcrumbs(self):
37213719
def is_expired(self):
37223720
return self.expiration_date_handled is not None
37233721

3724-
# relationship is many to many, but we use it as one-to-many
3725-
@property
3726-
def engagement(self):
3727-
engs = self.engagement_set.all()
3728-
if engs:
3729-
return engs[0]
3730-
3731-
return None
3732-
37333722
def copy(self, engagement=None):
37343723
copy = _copy_model_util(self)
37353724
# Save the necessary ManyToMany relationships

0 commit comments

Comments
 (0)