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 (