@@ -132,28 +132,27 @@ def _add_time(self):
132
132
133
133
self .params [self .EventParams .TIME ] = int (time .time ())
134
134
135
- def _add_impression_goal (self , experiment_key ):
135
+ def _add_impression_goal (self , experiment ):
136
136
""" Add impression goal information to the event.
137
137
138
138
Args:
139
- experiment_key: Experiment which is being activated.
139
+ experiment: Object representing experiment being activated.
140
140
"""
141
141
142
142
# 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
144
144
self .params [self .EventParams .GOAL_NAME ] = 'visitor-event'
145
145
146
- def _add_experiment (self , experiment_key , variation_id ):
146
+ def _add_experiment (self , experiment , variation_id ):
147
147
""" Add experiment to variation mapping to the impression event.
148
148
149
149
Args:
150
- experiment_key: Experiment which is being activated.
150
+ experiment: Object representing experiment being activated.
151
151
variation_id: ID for variation which would be presented to user.
152
152
"""
153
153
154
- experiment_id = self .config .get_experiment_id (experiment_key )
155
154
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
157
156
158
157
def _add_experiment_variation_params (self , user_id , valid_experiments ):
159
158
""" 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):
164
163
"""
165
164
166
165
for experiment in valid_experiments :
167
- variation_id = self .bucketer .bucket (experiment [ 1 ] , user_id )
166
+ variation_id = self .bucketer .bucket (experiment , user_id )
168
167
if variation_id :
169
168
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
171
170
172
171
def _add_conversion_goal (self , event_key , event_value ):
173
172
""" Add conversion goal information to the event.
@@ -178,6 +177,10 @@ def _add_conversion_goal(self, event_key, event_value):
178
177
"""
179
178
180
179
event = self .config .get_event (event_key )
180
+
181
+ if not event :
182
+ return
183
+
181
184
event_ids = event .id
182
185
183
186
if event_value :
@@ -188,11 +191,11 @@ def _add_conversion_goal(self, event_key, event_value):
188
191
self .params [self .EventParams .GOAL_ID ] = event_ids
189
192
self .params [self .EventParams .GOAL_NAME ] = event_key
190
193
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 ):
192
195
""" Create impression Event to be sent to the logging endpoint.
193
196
194
197
Args:
195
- experiment_key: Experiment for which impression needs to be recorded.
198
+ experiment: Object representing experiment for which impression needs to be recorded.
196
199
variation_id: ID for variation which would be presented to user.
197
200
user_id: ID for user.
198
201
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
203
206
204
207
self .params = {}
205
208
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 )
208
211
return Event (self .OFFLINE_API_PATH .format (project_id = self .params [self .EventParams .PROJECT_ID ]),
209
212
self .params )
210
213
@@ -296,18 +299,18 @@ def _add_time(self):
296
299
297
300
self .params [self .EventParams .TIME ] = int (round (time .time () * 1000 ))
298
301
299
- def _add_required_params_for_impression (self , experiment_key , variation_id ):
302
+ def _add_required_params_for_impression (self , experiment , variation_id ):
300
303
""" Add parameters that are required for the impression event to register.
301
304
302
305
Args:
303
- experiment_key : Experiment for which impression needs to be recorded.
306
+ experiment : Experiment for which impression needs to be recorded.
304
307
variation_id: ID for variation which would be presented to user.
305
308
"""
306
309
307
310
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
309
312
self .params [self .EventParams .DECISION ] = {
310
- self .EventParams .EXPERIMENT_ID : self . config . get_experiment_id ( experiment_key ) ,
313
+ self .EventParams .EXPERIMENT_ID : experiment . id ,
311
314
self .EventParams .VARIATION_ID : variation_id ,
312
315
self .EventParams .IS_LAYER_HOLDBACK : False
313
316
}
@@ -334,13 +337,13 @@ def _add_required_params_for_conversion(self, event_key, user_id, event_value, v
334
337
335
338
self .params [self .EventParams .LAYER_STATES ] = []
336
339
for experiment in valid_experiments :
337
- variation_id = self .bucketer .bucket (experiment [ 1 ] , user_id )
340
+ variation_id = self .bucketer .bucket (experiment , user_id )
338
341
if variation_id :
339
342
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 ,
341
344
self .EventParams .ACTION_TRIGGERED : True ,
342
345
self .EventParams .DECISION : {
343
- self .EventParams .EXPERIMENT_ID : experiment [ 0 ] ,
346
+ self .EventParams .EXPERIMENT_ID : experiment . id ,
344
347
self .EventParams .VARIATION_ID : variation_id ,
345
348
self .EventParams .IS_LAYER_HOLDBACK : False
346
349
}
@@ -349,11 +352,11 @@ def _add_required_params_for_conversion(self, event_key, user_id, event_value, v
349
352
self .params [self .EventParams .EVENT_ID ] = self .config .get_event (event_key ).id
350
353
self .params [self .EventParams .EVENT_NAME ] = event_key
351
354
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 ):
353
356
""" Create impression Event to be sent to the logging endpoint.
354
357
355
358
Args:
356
- experiment_key : Experiment for which impression needs to be recorded.
359
+ experiment : Experiment for which impression needs to be recorded.
357
360
variation_id: ID for variation which would be presented to user.
358
361
user_id: ID for user.
359
362
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
364
367
365
368
self .params = {}
366
369
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 )
368
371
return Event (self .IMPRESSION_ENDPOINT ,
369
372
self .params ,
370
373
http_verb = self .HTTP_VERB ,
0 commit comments