Skip to content

Commit ffc4df4

Browse files
committed
feat #4138 Avoid relying on model manager in migration
1 parent dee416e commit ffc4df4

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

src/core/migrations/0110_rename_contact_contactmessage_and_more.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,37 @@
99
def connect_contact_person_to_account(apps, schema_editor):
1010
ContactPerson = apps.get_model("core", "ContactPerson")
1111
Account = apps.get_model("core", "Account")
12-
languages = ["cy", "de", "en", "en-us", "en_us", "es", "fr", "it", "nl"]
1312
for contact_person in ContactPerson.objects.all():
14-
account, created = Account.objects.get_or_create(
13+
matching_accounts = Account.objects.filter(
1514
username=contact_person.email.lower(),
16-
defaults={
17-
"first_name": " ".join(contact_person.name.split()[:-1]),
18-
"last_name": contact_person.name.split()[-1],
19-
"email": contact_person.email,
20-
},
2115
)
16+
if matching_accounts.exists():
17+
account = matching_accounts.first()
18+
else:
19+
account = Account.objects.create(
20+
email=contact_person.email,
21+
username=contact_person.email.lower(),
22+
first_name=" ".join(contact_person.name.split()[:-1]),
23+
last_name=contact_person.name.split()[-1],
24+
)
2225
contact_person.account = account
23-
for language in languages:
24-
with translation.override(language):
25-
language_var = "name_{}".format(language)
26-
setattr(contact_person, language_var, "")
27-
contact_person.email = ""
2826
contact_person.save()
2927

3028

3129
def connect_contact_message_to_account(apps, schema_editor):
3230
ContactMessage = apps.get_model("core", "ContactMessage")
3331
Account = apps.get_model("core", "Account")
3432
for contact_message in ContactMessage.objects.all():
35-
account, created = Account.objects.get_or_create(
33+
matching_accounts = Account.objects.filter(
3634
username=contact_message.recipient.lower(),
37-
defaults={
38-
"email": contact_message.recipient,
39-
},
4035
)
36+
if matching_accounts.exists():
37+
account = matching_accounts.first()
38+
else:
39+
account = Account.objects.create(
40+
email=contact_message.recipient,
41+
username=contact_message.recipient.lower(),
42+
)
4143
contact_message.account = account
4244
contact_message.recipient = ""
4345
contact_message.client_ip = ""

0 commit comments

Comments
 (0)