MCPcopy Create free account
hub / github.com/Flagsmith/flagsmith / copy_identity_feature_states

Method copy_identity_feature_states

api/features/models.py:1081–1125  ·  view source on GitHub ↗
(
        target_identity: "Identity", source_identity: "Identity"
    )

Source from the content-addressed store, hash-verified

1079
1080 @staticmethod
1081 def copy_identity_feature_states(
1082 target_identity: "Identity", source_identity: "Identity"
1083 ) -> None:
1084 target_feature_states: dict[int, FeatureState] = (
1085 target_identity.get_overridden_feature_states()
1086 )
1087 source_feature_states: dict[int, FeatureState] = (
1088 source_identity.get_overridden_feature_states()
1089 )
1090
1091 # Delete own feature states not in source_identity
1092 feature_states_to_delete = list(
1093 target_feature_states.keys() - source_feature_states.keys()
1094 )
1095 for feature_state_id in feature_states_to_delete:
1096 target_feature_states[feature_state_id].delete()
1097
1098 # Clone source_identity's feature states to target_identity
1099 for source_feature_id, source_feature_state in source_feature_states.items():
1100 # Get target feature_state if exists in target identity or create new one
1101 target_feature_state: FeatureState = target_feature_states.get(
1102 source_feature_id
1103 ) or FeatureState.objects.create(
1104 environment=target_identity.environment,
1105 identity=target_identity,
1106 feature=source_feature_state.feature,
1107 )
1108
1109 # Copy enabled value from source feature_state
1110 target_feature_state.enabled = source_feature_states[
1111 source_feature_id
1112 ].enabled
1113
1114 if source_feature_state.feature.type == MULTIVARIATE:
1115 mv_values = [
1116 mv_value.clone(feature_state=target_feature_state, persist=False)
1117 for mv_value in source_feature_state.multivariate_feature_state_values.all()
1118 ]
1119 MultivariateFeatureStateValue.objects.bulk_create(mv_values)
1120
1121 target_feature_state.feature_state_value.copy_from(
1122 source_feature_state.feature_state_value
1123 )
1124
1125 target_feature_state.save()
1126
1127
1128class FeatureStateValue(

Callers 1

Calls 9

bulk_createMethod · 0.80
copy_fromMethod · 0.80
deleteMethod · 0.45
getMethod · 0.45
createMethod · 0.45
cloneMethod · 0.45
allMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected