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

Method generate_traits

api/environments/identities/models.py:179–215  ·  view source on GitHub ↗

Given a list of trait data items, validated by TraitSerializerFull, generate a list of TraitModel objects for the given identity. :param trait_data_items: list of dictionaries validated by TraitSerializerFull :param persist: determines whether the traits should be p

(
        self,
        trait_data_items: list[SDKTraitData],
        persist: bool = False,
    )

Source from the content-addressed store, hash-verified

177 return "Account %s" % self.identifier
178
179 def generate_traits(
180 self,
181 trait_data_items: list[SDKTraitData],
182 persist: bool = False,
183 ) -> list[Trait]:
184 """
185 Given a list of trait data items, validated by TraitSerializerFull, generate
186 a list of TraitModel objects for the given identity.
187
188 :param trait_data_items: list of dictionaries validated by TraitSerializerFull
189 :param persist: determines whether the traits should be persisted to db
190 :return: list of TraitModels
191 """
192 trait_models = []
193 trait_models_to_persist = []
194
195 for trait_data_item in trait_data_items:
196 # exclude traits with null values
197 if (trait_value := trait_data_item["trait_value"]) is None:
198 continue
199
200 trait_key = trait_data_item["trait_key"]
201 trait = Trait(
202 trait_key=trait_key,
203 identity=self,
204 **Trait.generate_trait_value_data(trait_value),
205 )
206 if trait_data_item.get("transient"):
207 trait.transient = True
208 else:
209 trait_models_to_persist.append(trait)
210 trait_models.append(trait)
211
212 if persist:
213 Trait.objects.bulk_create(trait_models_to_persist)
214
215 return trait_models
216
217 def update_traits(
218 self,

Calls 5

TraitClass · 0.90
bulk_createMethod · 0.80
getMethod · 0.45
appendMethod · 0.45