@@ -132,28 +132,27 @@ def _add_time(self):
132132
133133 self .params [self .EventParams .TIME ] = int (time .time ())
134134
135- def _add_impression_goal (self , experiment_key ):
135+ def _add_impression_goal (self , experiment ):
136136 """ Add impression goal information to the event.
137137
138138 Args:
139- experiment_key: Experiment which is being activated.
139+ experiment: Object representing experiment being activated.
140140 """
141141
142142 # For tracking impressions, goal ID is set equal to experiment ID of experiment being activated
143- self .params [self .EventParams .GOAL_ID ] = self . config . get_experiment_id ( experiment_key )
143+ self .params [self .EventParams .GOAL_ID ] = experiment . id
144144 self .params [self .EventParams .GOAL_NAME ] = 'visitor-event'
145145
146- def _add_experiment (self , experiment_key , variation_id ):
146+ def _add_experiment (self , experiment , variation_id ):
147147 """ Add experiment to variation mapping to the impression event.
148148
149149 Args:
150- experiment_key: Experiment which is being activated.
150+ experiment: Object representing experiment being activated.
151151 variation_id: ID for variation which would be presented to user.
152152 """
153153
154- experiment_id = self .config .get_experiment_id (experiment_key )
155154 self .params [self .EXPERIMENT_PARAM_FORMAT .format (experiment_prefix = self .EventParams .EXPERIMENT_PREFIX ,
156- experiment_id = experiment_id )] = variation_id
155+ experiment_id = experiment . id )] = variation_id
157156
158157 def _add_experiment_variation_params (self , user_id , valid_experiments ):
159158 """ Maps experiment and corresponding variation as parameters to be used in the event tracking call.
@@ -164,10 +163,10 @@ def _add_experiment_variation_params(self, user_id, valid_experiments):
164163 """
165164
166165 for experiment in valid_experiments :
167- variation_id = self .bucketer .bucket (experiment [ 1 ] , user_id )
166+ variation_id = self .bucketer .bucket (experiment , user_id )
168167 if variation_id :
169168 self .params [self .EXPERIMENT_PARAM_FORMAT .format (experiment_prefix = self .EventParams .EXPERIMENT_PREFIX ,
170- experiment_id = experiment [ 0 ] )] = variation_id
169+ experiment_id = experiment . id )] = variation_id
171170
172171 def _add_conversion_goal (self , event_key , event_value ):
173172 """ Add conversion goal information to the event.
@@ -178,6 +177,10 @@ def _add_conversion_goal(self, event_key, event_value):
178177 """
179178
180179 event = self .config .get_event (event_key )
180+
181+ if not event :
182+ return
183+
181184 event_ids = event .id
182185
183186 if event_value :
@@ -188,11 +191,11 @@ def _add_conversion_goal(self, event_key, event_value):
188191 self .params [self .EventParams .GOAL_ID ] = event_ids
189192 self .params [self .EventParams .GOAL_NAME ] = event_key
190193
191- def create_impression_event (self , experiment_key , variation_id , user_id , attributes ):
194+ def create_impression_event (self , experiment , variation_id , user_id , attributes ):
192195 """ Create impression Event to be sent to the logging endpoint.
193196
194197 Args:
195- experiment_key: Experiment for which impression needs to be recorded.
198+ experiment: Object representing experiment for which impression needs to be recorded.
196199 variation_id: ID for variation which would be presented to user.
197200 user_id: ID for user.
198201 attributes: Dict representing user attributes and values which need to be recorded.
@@ -203,8 +206,8 @@ def create_impression_event(self, experiment_key, variation_id, user_id, attribu
203206
204207 self .params = {}
205208 self ._add_common_params (user_id , attributes )
206- self ._add_impression_goal (experiment_key )
207- self ._add_experiment (experiment_key , variation_id )
209+ self ._add_impression_goal (experiment )
210+ self ._add_experiment (experiment , variation_id )
208211 return Event (self .OFFLINE_API_PATH .format (project_id = self .params [self .EventParams .PROJECT_ID ]),
209212 self .params )
210213
@@ -296,18 +299,18 @@ def _add_time(self):
296299
297300 self .params [self .EventParams .TIME ] = int (round (time .time () * 1000 ))
298301
299- def _add_required_params_for_impression (self , experiment_key , variation_id ):
302+ def _add_required_params_for_impression (self , experiment , variation_id ):
300303 """ Add parameters that are required for the impression event to register.
301304
302305 Args:
303- experiment_key : Experiment for which impression needs to be recorded.
306+ experiment : Experiment for which impression needs to be recorded.
304307 variation_id: ID for variation which would be presented to user.
305308 """
306309
307310 self .params [self .EventParams .IS_GLOBAL_HOLDBACK ] = False
308- self .params [self .EventParams .LAYER_ID ] = self . config . get_layer_id_for_experiment ( experiment_key )
311+ self .params [self .EventParams .LAYER_ID ] = experiment . layerId
309312 self .params [self .EventParams .DECISION ] = {
310- self .EventParams .EXPERIMENT_ID : self . config . get_experiment_id ( experiment_key ) ,
313+ self .EventParams .EXPERIMENT_ID : experiment . id ,
311314 self .EventParams .VARIATION_ID : variation_id ,
312315 self .EventParams .IS_LAYER_HOLDBACK : False
313316 }
@@ -334,13 +337,13 @@ def _add_required_params_for_conversion(self, event_key, user_id, event_value, v
334337
335338 self .params [self .EventParams .LAYER_STATES ] = []
336339 for experiment in valid_experiments :
337- variation_id = self .bucketer .bucket (experiment [ 1 ] , user_id )
340+ variation_id = self .bucketer .bucket (experiment , user_id )
338341 if variation_id :
339342 self .params [self .EventParams .LAYER_STATES ].append ({
340- self .EventParams .LAYER_ID : self . config . get_layer_id_for_experiment ( experiment [ 1 ]) ,
343+ self .EventParams .LAYER_ID : experiment . layerId ,
341344 self .EventParams .ACTION_TRIGGERED : True ,
342345 self .EventParams .DECISION : {
343- self .EventParams .EXPERIMENT_ID : experiment [ 0 ] ,
346+ self .EventParams .EXPERIMENT_ID : experiment . id ,
344347 self .EventParams .VARIATION_ID : variation_id ,
345348 self .EventParams .IS_LAYER_HOLDBACK : False
346349 }
@@ -349,11 +352,11 @@ def _add_required_params_for_conversion(self, event_key, user_id, event_value, v
349352 self .params [self .EventParams .EVENT_ID ] = self .config .get_event (event_key ).id
350353 self .params [self .EventParams .EVENT_NAME ] = event_key
351354
352- def create_impression_event (self , experiment_key , variation_id , user_id , attributes ):
355+ def create_impression_event (self , experiment , variation_id , user_id , attributes ):
353356 """ Create impression Event to be sent to the logging endpoint.
354357
355358 Args:
356- experiment_key : Experiment for which impression needs to be recorded.
359+ experiment : Experiment for which impression needs to be recorded.
357360 variation_id: ID for variation which would be presented to user.
358361 user_id: ID for user.
359362 attributes: Dict representing user attributes and values which need to be recorded.
@@ -364,7 +367,7 @@ def create_impression_event(self, experiment_key, variation_id, user_id, attribu
364367
365368 self .params = {}
366369 self ._add_common_params (user_id , attributes )
367- self ._add_required_params_for_impression (experiment_key , variation_id )
370+ self ._add_required_params_for_impression (experiment , variation_id )
368371 return Event (self .IMPRESSION_ENDPOINT ,
369372 self .params ,
370373 http_verb = self .HTTP_VERB ,
0 commit comments