11import json
2+ import typing
23from datetime import datetime
34from functools import partial
45from io import BytesIO
1314)
1415from testgen .common .mixpanel_service import MixpanelService
1516from testgen .common .models .profiling_run import ProfilingRun
16- from testgen .common .models .scores import ScoreCategory , ScoreDefinition , ScoreDefinitionCriteria , SelectedIssue
17+ from testgen .common .models .scores import (
18+ Categories ,
19+ ScoreCategory ,
20+ ScoreDefinition ,
21+ ScoreDefinitionCriteria ,
22+ ScoreTypes ,
23+ SelectedIssue ,
24+ )
1725from testgen .common .models .test_run import TestRun
1826from testgen .ui .components import widgets as testgen
1927from testgen .ui .components .widgets .download_dialog import FILE_DATA_TYPE , download_dialog , zip_multi_file_data
@@ -46,7 +54,7 @@ def render(
4654 category : str | None = None ,
4755 filters : str | None = None ,
4856 breakdown_category : str | None = None ,
49- breakdown_score_type : str | None = "score" ,
57+ breakdown_score_type : str | None = None ,
5058 drilldown : str | None = None ,
5159 definition_id : str | None = None ,
5260 project_code : str | None = None ,
@@ -65,20 +73,15 @@ def render(
6573 )
6674 return
6775
68- if not breakdown_category and original_score_definition .category :
69- breakdown_category = original_score_definition .category .value
70-
7176 project_code = original_score_definition .project_code
7277 page_title = "Edit Scorecard"
7378 last_breadcrumb = original_score_definition .name
79+
7480 testgen .page_header (page_title , breadcrumbs = [
7581 {"path" : "quality-dashboard" , "label" : "Quality Dashboard" , "params" : {"project_code" : project_code }},
7682 {"label" : last_breadcrumb },
7783 ])
7884
79- if not breakdown_category :
80- breakdown_category = ScoreCategory .dq_dimension .value
81-
8285 score_breakdown = None
8386 issues = None
8487 filter_values = {}
@@ -117,9 +120,21 @@ def render(
117120 group_by_field = filter_by_columns != "true" ,
118121 )
119122
120- score_card = None
121- if score_definition :
122- score_card = score_definition .as_score_card ()
123+ score_card = score_definition .as_score_card ()
124+
125+ if not breakdown_category or breakdown_category not in typing .get_args (Categories ):
126+ breakdown_category = (
127+ score_definition .category .value
128+ if score_definition .category
129+ else ScoreCategory .dq_dimension .value
130+ )
131+
132+ if not breakdown_score_type or breakdown_score_type not in typing .get_args (ScoreTypes ):
133+ breakdown_score_type = (
134+ "cde_score"
135+ if score_definition .cde_score and not score_definition .total_score
136+ else "score"
137+ )
123138
124139 if score_definition .criteria .has_filters () and not drilldown :
125140 score_breakdown = format_score_card_breakdown (
@@ -129,7 +144,7 @@ def render(
129144 ),
130145 breakdown_category ,
131146 )
132- if score_card and drilldown :
147+ if drilldown :
133148 issues = format_score_card_issues (
134149 score_definition .get_score_card_issues (breakdown_score_type , breakdown_category , drilldown ),
135150 breakdown_category ,
0 commit comments