@@ -21,10 +21,10 @@ def restore_email_addresses_for_dummy_users(apps, schema_editor):
21
21
EmailAddress = apps .get_model ("account" , "EmailAddress" )
22
22
SocialAccount = apps .get_model ("socialaccount" , "SocialAccount" )
23
23
24
- social_accounts = SocialAccount .objects .filter (user = OuterRef ("user " ))
25
- email_addresses = EmailAddress .objects .filter (user = OuterRef ("user " ))
24
+ social_accounts = SocialAccount .objects .filter (user = OuterRef ("pk " ))
25
+ email_addresses = EmailAddress .objects .filter (user = OuterRef ("pk " ))
26
26
dummy_users = (
27
- User .objects .filter (password__startswith = "!" )
27
+ User .objects .filter (password__startswith = "!" ) # nosec
28
28
.annotate (
29
29
has_social_account = Exists (social_accounts ), has_email_address = Exists (email_addresses )
30
30
)
@@ -35,7 +35,7 @@ def restore_email_addresses_for_dummy_users(apps, schema_editor):
35
35
EmailAddress (email = user .email , user = user , primary = True , verified = False )
36
36
for user in dummy_users
37
37
]
38
- EmailAddress .objects .bulk_create (email_addresses_to_create )
38
+ EmailAddress .objects .bulk_create (email_addresses_to_create , batch_size = 2000 )
39
39
40
40
41
41
def normalize_email_case_mismatches (apps , schema_editor ):
@@ -44,15 +44,26 @@ def normalize_email_case_mismatches(apps, schema_editor):
44
44
45
45
social_accounts = SocialAccount .objects .filter (user = OuterRef ("user" ))
46
46
# fix case-related mismatches between User.email and EmailAddress.email
47
- EmailAddress .objects .filter (
48
- ~ Exists (social_accounts ), verified = True , email__iexact = F ("user__email" )
49
- ).exclude (email = F ("user__email" )).update (email = F ("user__email" ))
47
+ email_addresses_to_update = (
48
+ EmailAddress .objects .filter (
49
+ ~ Exists (social_accounts ), verified = True , email__iexact = F ("user__email" )
50
+ )
51
+ .exclude (email = F ("user__email" ))
52
+ .select_related ("user" )
53
+ )
54
+
55
+ for email_address in email_addresses_to_update :
56
+ email_address .email = email_address .user .email
57
+
58
+ EmailAddress .objects .bulk_update (email_addresses_to_update , ["email" ], batch_size = 2000 )
50
59
51
60
52
61
class Migration (migrations .Migration ):
53
62
54
63
dependencies = [
55
64
("iam" , "0001_remove_business_group" ),
65
+ ("account" , "0005_emailaddress_idx_upper_email" ),
66
+ ("socialaccount" , "0005_socialtoken_nullable_app" ),
56
67
]
57
68
58
69
operations = [
0 commit comments