Skip to content

Commit 539a7b2

Browse files
SLA Calculations 2/2: Simplify logic (#11924)
* sla calc: add unit tests * sla calc: add unit tests * sla calc: add unit tests * linting * sla: simplify * sla config: cleanup * Update unittests/test_sla_calculations.py Co-authored-by: Blake Owens <76979297+blakeaowens@users.noreply.github.com> * Update unittests/test_sla_calculations.py Co-authored-by: Blake Owens <76979297+blakeaowens@users.noreply.github.com> * Update unittests/test_sla_calculations.py Co-authored-by: Blake Owens <76979297+blakeaowens@users.noreply.github.com> * Update unittests/test_sla_calculations.py Co-authored-by: Blake Owens <76979297+blakeaowens@users.noreply.github.com> --------- Co-authored-by: Blake Owens <76979297+blakeaowens@users.noreply.github.com>
1 parent d46dfdb commit 539a7b2

File tree

3 files changed

+17
-28
lines changed

3 files changed

+17
-28
lines changed

dojo/models.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3053,22 +3053,11 @@ def set_sla_expiration_date(self):
30533053
if not system_settings.enable_finding_sla:
30543054
return
30553055

3056-
days_remaining = None
30573056
sla_period, enforce_period = self.get_sla_period()
30583057
if sla_period is not None and enforce_period:
3059-
days_remaining = sla_period - self.sla_age
3058+
self.sla_expiration_date = self.get_sla_start_date() + relativedelta(days=sla_period)
30603059
else:
3061-
self.sla_expiration_date = Finding().sla_expiration_date
3062-
return
3063-
3064-
if days_remaining:
3065-
if self.mitigated:
3066-
mitigated_date = self.mitigated
3067-
if isinstance(mitigated_date, datetime):
3068-
mitigated_date = self.mitigated.date()
3069-
self.sla_expiration_date = mitigated_date + relativedelta(days=days_remaining)
3070-
else:
3071-
self.sla_expiration_date = get_current_date() + relativedelta(days=days_remaining)
3060+
self.sla_expiration_date = None
30723061

30733062
def sla_days_remaining(self):
30743063
if self.sla_expiration_date:

dojo/templatetags/display_tags.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -261,33 +261,33 @@ def finding_sla(finding):
261261
if not get_system_setting("enable_finding_sla"):
262262
return ""
263263

264-
sla_age, enforce_sla = finding.get_sla_period()
264+
sla_period, enforce_sla = finding.get_sla_period()
265265
if not enforce_sla:
266266
return ""
267267

268268
title = ""
269269
severity = finding.severity
270-
find_sla = finding.sla_days_remaining()
270+
days_remaining = finding.sla_days_remaining()
271271
if finding.mitigated:
272272
status = "blue"
273-
status_text = "Remediated within SLA for " + severity.lower() + " findings (" + str(sla_age) + " days since " + finding.get_sla_start_date().strftime("%b %d, %Y") + ")"
274-
if find_sla and find_sla < 0:
273+
status_text = "Remediated within SLA for " + severity.lower() + " findings (" + str(sla_period) + " days since " + finding.get_sla_start_date().strftime("%b %d, %Y") + ")"
274+
if days_remaining and days_remaining < 0:
275275
status = "orange"
276-
find_sla = abs(find_sla)
276+
days_remaining = abs(days_remaining)
277277
status_text = "Out of SLA: Remediated " + str(
278-
find_sla) + " days past SLA for " + severity.lower() + " findings (" + str(sla_age) + " days since " + finding.get_sla_start_date().strftime("%b %d, %Y") + ")"
278+
days_remaining) + " days past SLA for " + severity.lower() + " findings (" + str(sla_period) + " days since " + finding.get_sla_start_date().strftime("%b %d, %Y") + ")"
279279
else:
280280
status = "green"
281-
status_text = "Remediation for " + severity.lower() + " findings in " + str(sla_age) + " days or less since " + finding.get_sla_start_date().strftime("%b %d, %Y")
282-
if find_sla and find_sla < 0:
281+
status_text = "Remediation for " + severity.lower() + " findings in " + str(sla_period) + " days or less since " + finding.get_sla_start_date().strftime("%b %d, %Y")
282+
if days_remaining and days_remaining < 0:
283283
status = "red"
284284
status_text = "Overdue: Remediation for " + severity.lower() + " findings in " + str(
285-
sla_age) + " days or less since " + finding.get_sla_start_date().strftime("%b %d, %Y")
285+
sla_period) + " days or less since " + finding.get_sla_start_date().strftime("%b %d, %Y")
286286

287-
if find_sla is not None:
287+
if days_remaining is not None:
288288
title = (
289289
f'<a class="has-popover" data-toggle="tooltip" data-placement="bottom" title="" href="#" data-content="{status_text}">'
290-
f'<span class="label severity age-{status}">{find_sla}</span></a>'
290+
f'<span class="label severity age-{status}">{days_remaining}</span></a>'
291291
)
292292

293293
return mark_safe(title)

unittests/test_sla_calculations.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def test_new_finding(self):
4545
self.assertEqual((self.now + relativedelta(days=self.sla_config.high)).date(), finding.sla_expiration_date)
4646
self.assertEqual(self.sla_config.high, finding.sla_days_remaining())
4747

48-
# Finding within SLA should have correct sla_exration_date and days_remaining
48+
# Finding within SLA should have correct sla_expiration_date and days_remaining
4949
def test_active_within_sla(self):
5050
finding = Finding(test=Test.objects.get(id=89), title="Test Finding", severity="High")
5151
finding.save()
@@ -58,7 +58,7 @@ def test_active_within_sla(self):
5858
self.assertEqual((self.now + relativedelta(days=self.sla_config.high)).date(), finding.sla_expiration_date)
5959
self.assertEqual(self.sla_config.high - 10, finding.sla_days_remaining())
6060

61-
# Finding outside SLA should have correct sla_exration_date and days_remaining
61+
# Finding outside SLA should have correct sla_expiration_date and days_remaining
6262
def test_active_outside_sla(self):
6363
finding = Finding(test=Test.objects.get(id=89), title="Test Finding", severity="High")
6464
finding.save()
@@ -71,7 +71,7 @@ def test_active_outside_sla(self):
7171
self.assertEqual((self.now + relativedelta(days=self.sla_config.high)).date(), finding.sla_expiration_date)
7272
self.assertEqual(self.sla_config.high - 50, finding.sla_days_remaining())
7373

74-
# Finding mitigated inside SLA should have correct sla_exration_date and days_remaining
74+
# Finding mitigated inside SLA should have correct sla_expiration_date and days_remaining
7575
def test_mitigated_inside_sla(self):
7676
finding = Finding(test=Test.objects.get(id=89), title="Test Finding", severity="High")
7777
finding.save()
@@ -111,7 +111,7 @@ def test_mitigated_inside_sla(self):
111111
self.assertTrue("within SLA" in finding_sla(finding))
112112
self.assertTrue(">20<" in finding_sla(finding))
113113

114-
# Finding mitigated outside SLA should have correct sla_exration_date and days_remaining
114+
# Finding mitigated outside SLA should have correct sla_expiration_date and days_remaining
115115
def test_mitigated_outside_sla(self):
116116
finding = Finding(test=Test.objects.get(id=89), title="Test Finding", severity="High")
117117
finding.save()

0 commit comments

Comments
 (0)