@@ -65,7 +65,7 @@ def append_audit_condition(
6565 campaign_details : tuple [CampaignID | None , CampaignVersion | None ],
6666 redirect_rule_details : tuple [RulePriority | None , RuleName | None ],
6767 ) -> None :
68- audit_eligibility_cohorts , audit_eligibility_cohort_groups , audit_actions = [], [], []
68+ audit_eligibility_cohorts , audit_eligibility_cohort_groups = [], []
6969 audit_filter_rule , audit_suitability_rule , audit_redirect_rule = None , None , None
7070 best_active_iteration = best_results [0 ]
7171 best_candidate = best_results [1 ]
@@ -85,37 +85,15 @@ def append_audit_condition(
8585 )
8686
8787 if result .audit_rules and best_candidate :
88- if best_candidate .status and best_candidate .status .name == Status .not_eligible .name :
89- audit_filter_rule = AuditFilterRule (
90- rule_priority = result .audit_rules [0 ].rule_priority ,
91- rule_name = result .audit_rules [0 ].rule_name ,
92- )
93- if best_candidate .status and best_candidate .status .name == Status .not_actionable .name :
94- audit_suitability_rule = AuditSuitabilityRule (
95- rule_priority = result .audit_rules [0 ].rule_priority ,
96- rule_name = result .audit_rules [0 ].rule_name ,
97- rule_message = result .audit_rules [0 ].rule_description ,
98- )
88+ audit_filter_rule = AuditContext .create_audit_filter_rule (best_candidate , result )
89+ audit_suitability_rule = AuditContext .create_audit_suitability_rule (best_candidate , result )
9990
10091 if best_candidate and best_candidate .status and best_candidate .status .name == Status .actionable .name :
10192 audit_redirect_rule = AuditRedirectRule (
10293 rule_priority = str (redirect_rule_details [0 ]), rule_name = redirect_rule_details [1 ]
10394 )
10495
105- if suggested_actions is None :
106- audit_actions = None
107- elif len (suggested_actions ) > 0 :
108- for action in suggested_actions :
109- audit_actions .append (
110- AuditAction (
111- internal_action_code = action .internal_action_code ,
112- action_code = action .action_code ,
113- action_type = action .action_type ,
114- action_description = action .action_description ,
115- action_url = str (action .url_link ) if action .url_link else None ,
116- action_url_label = action .url_label ,
117- )
118- )
96+ audit_actions = AuditContext .create_audit_actions (suggested_actions )
11997
12098 audit_condition = AuditCondition (
12199 campaign_id = campaign_details [0 ],
@@ -143,3 +121,45 @@ def add_response_details(response_id: UUID, last_updated: datetime) -> None:
143121 @staticmethod
144122 def write_to_firehose (service : AuditService ) -> None :
145123 service .audit (g .audit_log .model_dump (by_alias = True ))
124+
125+ @staticmethod
126+ def create_audit_actions (suggested_actions : list [SuggestedAction ] | None ) -> list [AuditAction ] | None :
127+ audit_actions = []
128+ if suggested_actions is None :
129+ audit_actions = None
130+ elif len (suggested_actions ) > 0 :
131+ for action in suggested_actions :
132+ audit_actions .append (
133+ AuditAction (
134+ internal_action_code = action .internal_action_code ,
135+ action_code = action .action_code ,
136+ action_type = action .action_type ,
137+ action_description = action .action_description ,
138+ action_url = str (action .url_link ) if action .url_link else None ,
139+ action_url_label = action .url_label ,
140+ )
141+ )
142+ return audit_actions
143+
144+ @staticmethod
145+ def create_audit_suitability_rule (
146+ best_candidate : IterationResult , result : CohortGroupResult
147+ ) -> AuditSuitabilityRule | None :
148+ audit_suitability_rule = None
149+ if best_candidate .status and best_candidate .status .name == Status .not_actionable .name :
150+ audit_suitability_rule = AuditSuitabilityRule (
151+ rule_priority = result .audit_rules [0 ].rule_priority ,
152+ rule_name = result .audit_rules [0 ].rule_name ,
153+ rule_message = result .audit_rules [0 ].rule_description ,
154+ )
155+ return audit_suitability_rule
156+
157+ @staticmethod
158+ def create_audit_filter_rule (best_candidate : IterationResult , result : CohortGroupResult ) -> AuditFilterRule | None :
159+ audit_filter_rule = None
160+ if best_candidate .status and best_candidate .status .name == Status .not_eligible .name :
161+ audit_filter_rule = AuditFilterRule (
162+ rule_priority = result .audit_rules [0 ].rule_priority ,
163+ rule_name = result .audit_rules [0 ].rule_name ,
164+ )
165+ return audit_filter_rule
0 commit comments