@@ -13,27 +13,30 @@ class SlackMessageGenerator(generators.base.BaseMessageGenerator):
13
13
14
14
def scorecard_report (self , blueprint : str , scorecard : Dict [str , Any ], entities : list ):
15
15
blueprint_plural = utils .convert_to_plural (blueprint ).title ()
16
- entities_by_level = {
17
- "Gold" : [],
18
- "Silver" : [],
19
- "Bronze" : [],
20
- "Basic" : [],
21
- }
16
+ most_advanced_level : str = self ._get_most_advanced_scorecard_level (
17
+ scorecard
18
+ )
19
+ entities_by_level = {}
22
20
overall_entities_per_team = {}
23
- gold_entities_per_team = {}
21
+ most_advanced_entities_per_team = {}
24
22
number_of_passed_entities_per_rule = {}
25
23
for entity in entities :
26
- entity_scorecard_result = entity .get ("scorecards" , {}).get (scorecard .get ("identifier" ), {})
27
- entities_by_level [entity_scorecard_result .get ("level" )].append (
24
+ entity_scorecard_result = entity .get (
25
+ "scorecards" , {}
26
+ ).get (scorecard .get ("identifier" ), {})
27
+ entities_by_level .setdefault (
28
+ entity_scorecard_result .get ("level" ),
29
+ []
30
+ ).append (
28
31
{
29
32
"identifier" : entity .get ("identifier" ),
30
33
"name" : entity .get ("title" ),
31
34
}
32
35
)
33
36
for team in entity .get ("team" , []):
34
37
overall_entities_per_team [team ] = overall_entities_per_team .get (team , 0 ) + 1
35
- if entity_scorecard_result .get ("level" ) == "Gold" :
36
- gold_entities_per_team [team ] = gold_entities_per_team .get (team , 0 ) + 1
38
+ if entity_scorecard_result .get ("level" ) == most_advanced_level :
39
+ most_advanced_entities_per_team [team ] = most_advanced_entities_per_team .get (team , 0 ) + 1
37
40
38
41
for rule in entity_scorecard_result .get ("rules" , []):
39
42
number_of_passed_entities_per_rule [rule .get ("identifier" )] = \
@@ -181,24 +184,29 @@ def scorecard_report(self, blueprint: str, scorecard: Dict[str, Any], entities:
181
184
]
182
185
return blocks
183
186
184
- def scorecard_reminder (self ,
185
- blueprint : str ,
186
- scorecard : Dict [str , Any ],
187
- entities : list ) -> List [Dict [str , Any ]]:
187
+ def scorecard_reminder (
188
+ self ,
189
+ blueprint : str ,
190
+ scorecard : Dict [str , Any ],
191
+ entities : list
192
+ ) -> List [Dict [str , Any ]]:
188
193
blueprint_plural = utils .convert_to_plural (blueprint ).title ()
189
- entities_didnt_pass_all_rules = {
190
- "Silver" : [],
191
- "Bronze" : [],
192
- "Basic" : [],
193
- }
194
+ most_advanced_level : str = self . _get_most_advanced_scorecard_level (
195
+ scorecard
196
+ )
197
+
198
+ entities_didnt_pass_all_rules = { }
194
199
number_of_entities_didnt_pass_all_rules = 0
195
200
for entity in entities :
196
201
entity_scorecard_result = entity .get ("scorecards" , {}).get (scorecard .get ("identifier" ), {})
197
202
number_of_rules = len (entity_scorecard_result .get ("rules" , []))
198
- if entity_scorecard_result .get ("level" ) != "Gold" :
203
+ if entity_scorecard_result .get ("level" ) != most_advanced_level :
199
204
passed_rules = [rule for rule in entity_scorecard_result .get ("rules" , []) if rule .get ("status" ) == "SUCCESS" ] or []
200
205
if len (passed_rules ) < number_of_rules :
201
- entities_didnt_pass_all_rules [entity_scorecard_result .get ("level" )].append (
206
+ entities_didnt_pass_all_rules .setdefault (
207
+ entity_scorecard_result .get ("level" ),
208
+ []
209
+ ).append (
202
210
{
203
211
"identifier" : entity .get ("identifier" ),
204
212
"name" : entity .get ("title" ),
@@ -242,6 +250,17 @@ def scorecard_reminder(self,
242
250
)
243
251
]
244
252
return blocks
253
+
254
+ @staticmethod
255
+ def _get_most_advanced_scorecard_level (scorecard : dict [str , Any ]) -> str | None :
256
+ """
257
+ Get the most advanced level of a scorecard
258
+ """
259
+
260
+ scorecard_levels = scorecard .get ("levels" )
261
+
262
+ most_advanced_level : str = scorecard_levels [- 1 ].get ("title" )
263
+ return most_advanced_level
245
264
246
265
@staticmethod
247
266
def _resolve_top_highest_lowest_scored_rules (entities : list ,
0 commit comments