@@ -475,7 +475,7 @@ def _create_collection(self, model):
475475 encrypted_fields_map = getattr (auto_encryption_opts , "_encrypted_fields_map" , None )
476476
477477 if not encrypted_fields_map :
478- encrypted_fields = self ._get_encrypted_fields (model , create_data_keys = True )
478+ encrypted_fields = self ._get_encrypted_fields (model )
479479 else :
480480 encrypted_fields = encrypted_fields_map .get (db_table )
481481
@@ -488,9 +488,7 @@ def _create_collection(self, model):
488488 # Unencrypted path
489489 db .create_collection (db_table )
490490
491- def _get_encrypted_fields (
492- self , model , create_data_keys = False , key_alt_name = None , path_prefix = None
493- ):
491+ def _get_encrypted_fields (self , model , key_alt_name = None , path_prefix = None ):
494492 """
495493 Recursively collect encryption schema data for only encrypted fields in a model.
496494 Returns None if no encrypted fields are found anywhere in the model hierarchy.
@@ -520,7 +518,6 @@ def _get_encrypted_fields(
520518 if isinstance (field , EmbeddedModelField ) and not getattr (field , "encrypted" , False ):
521519 embedded_result = self ._get_encrypted_fields (
522520 field .embedded_model ,
523- create_data_keys = create_data_keys ,
524521 key_alt_name = new_key_alt_name ,
525522 path_prefix = path ,
526523 )
@@ -530,15 +527,15 @@ def _get_encrypted_fields(
530527
531528 if getattr (field , "encrypted" , False ):
532529 bson_type = field .db_type (connection )
533- if create_data_keys :
530+ data_key = key_vault_collection .find_one ({"keyAltNames" : new_key_alt_name })
531+ if data_key :
532+ data_key = data_key ["_id" ]
533+ else :
534534 data_key = client_encryption .create_data_key (
535535 kms_provider = kms_provider ,
536536 master_key = master_key ,
537537 key_alt_names = [new_key_alt_name ],
538538 )
539- else :
540- key = key_vault_collection .find_one ({"keyAltNames" : new_key_alt_name })
541- data_key = key ["_id" ]
542539 field_dict = {
543540 "bsonType" : bson_type ,
544541 "path" : path ,
0 commit comments