44from typing import Any , Dict , List , Optional , Tuple , Union , cast
55
66import pydash
7+ from fideslang .validation import FidesKey
78from loguru import logger
89from requests import Response
910from sqlalchemy .orm import Session
1819from fides .api .graph .execution import ExecutionNode
1920from fides .api .models .connectionconfig import ConnectionConfig , ConnectionTestStatus
2021from fides .api .models .policy import Policy
21- from fides .api .models .privacy_notice import UserConsentPreference
2222from fides .api .models .privacy_request import PrivacyRequest , RequestTask
2323from fides .api .schemas .consentable_item import (
2424 ConsentableItem ,
@@ -687,15 +687,16 @@ def run_consent_request(
687687
688688 if notice_based_override_function :
689689 # follow the notice-based SaaS consent flow
690- notice_id_to_preference_map , filtered_preferences = (
691- build_user_consent_and_filtered_preferences_for_service (
692- self .configuration .system ,
693- privacy_request ,
694- session ,
695- True ,
696- )
690+ (
691+ notice_preference_map ,
692+ filtered_preferences ,
693+ ) = build_user_consent_and_filtered_preferences_for_service (
694+ self .configuration .system ,
695+ privacy_request ,
696+ session ,
697+ True ,
697698 )
698- if not notice_id_to_preference_map :
699+ if not notice_preference_map :
699700 logger .info (
700701 "Skipping consent requests on node {}: No actionable consent preferences to propagate" ,
701702 node .address .value ,
@@ -723,12 +724,13 @@ def run_consent_request(
723724 )
724725 consent_propagation_status = self ._invoke_consent_request_override (
725726 notice_based_override_function ,
727+ self .configuration .key ,
726728 self .create_client (),
727729 policy ,
728730 privacy_request ,
729731 self .secrets ,
730732 identity_data ,
731- notice_id_to_preference_map , # type: ignore[arg-type]
733+ notice_preference_map , # type: ignore[arg-type]
732734 notice_based_consentable_item_hierarchy ,
733735 )
734736 if consent_propagation_status == ConsentPropagationStatus .no_update_needed :
@@ -800,6 +802,7 @@ def run_consent_request(
800802 )
801803 consent_propagation_status = self ._invoke_consent_request_override (
802804 override_function ,
805+ self .configuration .key ,
803806 self .create_client (),
804807 policy ,
805808 privacy_request ,
@@ -997,12 +1000,13 @@ def _invoke_masking_request_override(
9971000 @staticmethod
9981001 def _invoke_consent_request_override (
9991002 override_function : RequestOverrideFunction ,
1003+ connection_key : FidesKey ,
10001004 client : AuthenticatedClient ,
10011005 policy : Policy ,
10021006 privacy_request : PrivacyRequest ,
10031007 secrets : Any ,
10041008 identity_data : Optional [Dict [str , Any ]] = None ,
1005- notice_id_to_preference_map : Optional [Dict [str , UserConsentPreference ]] = None ,
1009+ notice_preference_map : Optional [Dict [str , Dict [ str , Any ] ]] = None ,
10061010 consentable_items_hierarchy : Optional [List [ConsentableItem ]] = None ,
10071011 ) -> ConsentPropagationStatus :
10081012 """
@@ -1011,13 +1015,14 @@ def _invoke_consent_request_override(
10111015 """
10121016 try :
10131017 logger .info ("Invoking consent request override function..." )
1014- if notice_id_to_preference_map :
1018+ if notice_preference_map :
10151019 # At this point, we've already validated the override function signature to take these params
10161020 return override_function (
1021+ connection_key ,
10171022 client ,
10181023 secrets ,
10191024 identity_data ,
1020- notice_id_to_preference_map ,
1025+ notice_preference_map ,
10211026 consentable_items_hierarchy ,
10221027 ) # type: ignore
10231028 return override_function (
0 commit comments