Skip to content

Commit 73853d1

Browse files
committed
resolves conflicts
2 parents 4de0ea9 + e4d949a commit 73853d1

File tree

3 files changed

+351
-35
lines changed

3 files changed

+351
-35
lines changed

optimizely/helpers/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,5 @@ class NotificationTypes(object):
9999

100100
class DecisionInfoTypes(object):
101101
EXPERIMENT = "experiment"
102+
FEATURE = "feature"
102103
FEATURE_VARIABLE = "feature_variable"

optimizely/optimizely.py

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,13 +209,24 @@ def _get_feature_variable_for_type(self, feature_key, variable_key, variable_typ
209209
return None
210210

211211
feature_enabled = False
212-
212+
variable_value = variable.defaultValue
213213
decision = self.decision_service.get_variation_for_feature(feature_flag, user_id, attributes)
214214
if decision.variation:
215-
variable_value = self.config.get_variable_value_for_variation(variable, decision.variation)
215+
216216
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+
)
217229
else:
218-
variable_value = variable.defaultValue
219230
self.logger.info(
220231
'User "%s" is not in any variation or rollout rule. '
221232
'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):
421432
if not feature:
422433
return False
423434

435+
experiment_key = None
436+
feature_enabled = False
437+
variation_key = None
424438
decision = self.decision_service.get_variation_for_feature(feature, user_id, attributes)
439+
is_source_experiment = decision.source == decision_service.DECISION_SOURCE_EXPERIMENT
440+
425441
if decision.variation:
442+
if decision.variation.featureEnabled is True:
443+
feature_enabled = True
426444
# 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
428448
self._send_impression_event(decision.experiment,
429449
decision.variation,
430450
user_id,
431451
attributes)
432452

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+
)
436471

437-
self.logger.info('Feature "%s" is not enabled for user "%s".' % (feature_key, user_id))
438-
return False
472+
return feature_enabled
439473

440474
def get_enabled_features(self, user_id, attributes=None):
441475
""" Returns the list of features that are enabled for the user.

0 commit comments

Comments
 (0)