From 6bfa724b9a91409bf28b81b78d024914232d6768 Mon Sep 17 00:00:00 2001
From: monsieurswag
Date: Thu, 2 Jan 2025 04:44:51 +0100
Subject: [PATCH 1/5] Fix observation and score copying during the mapping
process
---
backend/core/models.py | 3 +++
backend/core/views.py | 16 +++++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/backend/core/models.py b/backend/core/models.py
index 1bd888f80..68aad834b 100644
--- a/backend/core/models.py
+++ b/backend/core/models.py
@@ -2778,6 +2778,9 @@ def create_requirement_assessments(
requirement_assessment.is_scored = (
baseline_requirement_assessment.is_scored
)
+ requirement_assessment.observation = (
+ baseline_requirement_assessment.observation
+ )
requirement_assessment.evidences.set(
baseline_requirement_assessment.evidences.all()
)
diff --git a/backend/core/views.py b/backend/core/views.py
index 0393f14d4..429b718a1 100644
--- a/backend/core/views.py
+++ b/backend/core/views.py
@@ -2476,9 +2476,15 @@ def perform_create(self, serializer):
)
instance: ComplianceAssessment = serializer.save()
instance.create_requirement_assessments(baseline)
+ target_framework = serializer.validated_data["framework"]
+ source_framework = baseline.framework
+ same_minmax_score = (
+ target_framework.min_score == source_framework.min_score
+ and target_framework.max_score == source_framework.max_score
+ )
if baseline and baseline.framework != instance.framework:
mapping_set = RequirementMappingSet.objects.get(
- target_framework=serializer.validated_data["framework"],
+ target_framework=target_framework,
source_framework=baseline.framework,
)
for (
@@ -2491,6 +2497,14 @@ def perform_create(self, serializer):
"source_requirement_assessment"
]["id"]
)
+ if same_minmax_score:
+ requirement_assessment.is_scored = (
+ baseline_requirement_assessment.is_scored
+ )
+ requirement_assessment.score = baseline_requirement_assessment.score
+ requirement_assessment.observation = (
+ baseline_requirement_assessment.observation
+ )
requirement_assessment.evidences.add(
*[ev.id for ev in baseline_requirement_assessment.evidences.all()]
)
From 0614bf3d38857b5159354aa66705bb0a1d089528 Mon Sep 17 00:00:00 2001
From: monsieurswag
Date: Fri, 3 Jan 2025 07:28:26 +0100
Subject: [PATCH 2/5] Fix tests and too much permissive score copying
---
backend/core/views.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/backend/core/views.py b/backend/core/views.py
index 429b718a1..e2492f88d 100644
--- a/backend/core/views.py
+++ b/backend/core/views.py
@@ -2476,13 +2476,13 @@ def perform_create(self, serializer):
)
instance: ComplianceAssessment = serializer.save()
instance.create_requirement_assessments(baseline)
- target_framework = serializer.validated_data["framework"]
- source_framework = baseline.framework
- same_minmax_score = (
- target_framework.min_score == source_framework.min_score
- and target_framework.max_score == source_framework.max_score
- )
if baseline and baseline.framework != instance.framework:
+ target_framework = serializer.validated_data["framework"]
+ source_framework = baseline.framework
+ same_minmax_score = (
+ target_framework.min_score == source_framework.min_score
+ and target_framework.max_score == source_framework.max_score
+ )
mapping_set = RequirementMappingSet.objects.get(
target_framework=target_framework,
source_framework=baseline.framework,
@@ -2497,7 +2497,7 @@ def perform_create(self, serializer):
"source_requirement_assessment"
]["id"]
)
- if same_minmax_score:
+ if same_minmax_score and target_framework == source_framework:
requirement_assessment.is_scored = (
baseline_requirement_assessment.is_scored
)
From 7a7ec00e9862d591c8189229b60cdb6cf6210a59 Mon Sep 17 00:00:00 2001
From: monsieurswag
Date: Tue, 7 Jan 2025 17:58:24 +0100
Subject: [PATCH 3/5] Add score in additional informations
---
backend/core/models.py | 2 ++
.../requirement-assessments/[id=uuid]/edit/+page.svelte | 8 ++++++++
2 files changed, 10 insertions(+)
diff --git a/backend/core/models.py b/backend/core/models.py
index 68aad834b..2f191ccfc 100644
--- a/backend/core/models.py
+++ b/backend/core/models.py
@@ -3189,6 +3189,8 @@ def assign_attributes(target, attributes):
"source_requirement_assessment": {
"str": str(ref),
"id": str(ref.id),
+ "is_scored": ref.is_scored,
+ "score": ref.score,
"coverage": mapping.coverage,
},
# "mappings": [mapping.id for mapping in mappings],
diff --git a/frontend/src/routes/(app)/(third-party)/requirement-assessments/[id=uuid]/edit/+page.svelte b/frontend/src/routes/(app)/(third-party)/requirement-assessments/[id=uuid]/edit/+page.svelte
index 749788b4b..2ced03ad7 100644
--- a/frontend/src/routes/(app)/(third-party)/requirement-assessments/[id=uuid]/edit/+page.svelte
+++ b/frontend/src/routes/(app)/(third-party)/requirement-assessments/[id=uuid]/edit/+page.svelte
@@ -342,6 +342,14 @@
{safeTranslate(mappingInference.sourceRequirementAssessment.coverage)}
+ {#if mappingInference.sourceRequirementAssessment.is_scored}
+
+ {m.scoreSemiColon()}
+
+ {safeTranslate(mappingInference.sourceRequirementAssessment.score)}
+
+
+ {/if}
{m.suggestionColon()}
Date: Fri, 10 Jan 2025 16:09:53 +0100
Subject: [PATCH 4/5] feat: remove useless code
---
backend/core/views.py | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/backend/core/views.py b/backend/core/views.py
index e2492f88d..87820d1d3 100644
--- a/backend/core/views.py
+++ b/backend/core/views.py
@@ -2478,11 +2478,6 @@ def perform_create(self, serializer):
instance.create_requirement_assessments(baseline)
if baseline and baseline.framework != instance.framework:
target_framework = serializer.validated_data["framework"]
- source_framework = baseline.framework
- same_minmax_score = (
- target_framework.min_score == source_framework.min_score
- and target_framework.max_score == source_framework.max_score
- )
mapping_set = RequirementMappingSet.objects.get(
target_framework=target_framework,
source_framework=baseline.framework,
@@ -2497,11 +2492,6 @@ def perform_create(self, serializer):
"source_requirement_assessment"
]["id"]
)
- if same_minmax_score and target_framework == source_framework:
- requirement_assessment.is_scored = (
- baseline_requirement_assessment.is_scored
- )
- requirement_assessment.score = baseline_requirement_assessment.score
requirement_assessment.observation = (
baseline_requirement_assessment.observation
)
From 81824e4b3181d01c3caf65b3cb6632b3ecdf5ed2 Mon Sep 17 00:00:00 2001
From: Mohamed-Hacene
Date: Fri, 10 Jan 2025 16:10:52 +0100
Subject: [PATCH 5/5] chore: remove useless variable
---
backend/core/views.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/backend/core/views.py b/backend/core/views.py
index 87820d1d3..069feac46 100644
--- a/backend/core/views.py
+++ b/backend/core/views.py
@@ -2477,9 +2477,8 @@ def perform_create(self, serializer):
instance: ComplianceAssessment = serializer.save()
instance.create_requirement_assessments(baseline)
if baseline and baseline.framework != instance.framework:
- target_framework = serializer.validated_data["framework"]
mapping_set = RequirementMappingSet.objects.get(
- target_framework=target_framework,
+ target_framework=serializer.validated_data["framework"],
source_framework=baseline.framework,
)
for (