@@ -209,13 +209,24 @@ def _get_feature_variable_for_type(self, feature_key, variable_key, variable_typ
209
209
return None
210
210
211
211
feature_enabled = False
212
-
212
+ variable_value = variable . defaultValue
213
213
decision = self .decision_service .get_variation_for_feature (feature_flag , user_id , attributes )
214
214
if decision .variation :
215
- variable_value = self . config . get_variable_value_for_variation ( variable , decision . variation )
215
+
216
216
feature_enabled = decision .variation .featureEnabled
217
+ if feature_enabled :
218
+ variable_value = self .config .get_variable_value_for_variation (variable , decision .variation )
219
+ self .logger .info (
220
+ 'Got variable value "%s" for variable "%s" of feature flag "%s".' % (
221
+ variable_value , variable_key , feature_key
222
+ )
223
+ )
224
+ else :
225
+ self .logger .info (
226
+ 'Feature "%s" for variation "%s" is not enabled. '
227
+ 'Returning the default variable value "%s".' % (feature_key , decision .variation .key , variable_value )
228
+ )
217
229
else :
218
- variable_value = variable .defaultValue
219
230
self .logger .info (
220
231
'User "%s" is not in any variation or rollout rule. '
221
232
'Returning default value for variable "%s" of feature flag "%s".' % (user_id , variable_key , feature_key )
@@ -421,21 +432,44 @@ def is_feature_enabled(self, feature_key, user_id, attributes=None):
421
432
if not feature :
422
433
return False
423
434
435
+ experiment_key = None
436
+ feature_enabled = False
437
+ variation_key = None
424
438
decision = self .decision_service .get_variation_for_feature (feature , user_id , attributes )
439
+ is_source_experiment = decision .source == decision_service .DECISION_SOURCE_EXPERIMENT
440
+
425
441
if decision .variation :
442
+ if decision .variation .featureEnabled is True :
443
+ feature_enabled = True
426
444
# Send event if Decision came from an experiment.
427
- if decision .source == decision_service .DECISION_SOURCE_EXPERIMENT :
445
+ if is_source_experiment :
446
+ experiment_key = decision .experiment .key
447
+ variation_key = decision .variation .key
428
448
self ._send_impression_event (decision .experiment ,
429
449
decision .variation ,
430
450
user_id ,
431
451
attributes )
432
452
433
- if decision .variation .featureEnabled :
434
- self .logger .info ('Feature "%s" is enabled for user "%s".' % (feature_key , user_id ))
435
- return True
453
+ if feature_enabled :
454
+ self .logger .info ('Feature "%s" is enabled for user "%s".' % (feature_key , user_id ))
455
+ else :
456
+ self .logger .info ('Feature "%s" is not enabled for user "%s".' % (feature_key , user_id ))
457
+
458
+ self .notification_center .send_notifications (
459
+ enums .NotificationTypes .DECISION ,
460
+ enums .DecisionInfoTypes .FEATURE ,
461
+ user_id ,
462
+ attributes or {},
463
+ {
464
+ 'feature_key' : feature_key ,
465
+ 'feature_enabled' : feature_enabled ,
466
+ 'source' : decision .source ,
467
+ 'source_experiment_key' : experiment_key ,
468
+ 'source_variation_key' : variation_key
469
+ }
470
+ )
436
471
437
- self .logger .info ('Feature "%s" is not enabled for user "%s".' % (feature_key , user_id ))
438
- return False
472
+ return feature_enabled
439
473
440
474
def get_enabled_features (self , user_id , attributes = None ):
441
475
""" Returns the list of features that are enabled for the user.
0 commit comments