mirror of https://github.com/zulip/zulip.git
32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
|
from django.db import migrations
|
||
|
|
||
|
|
||
|
class Migration(migrations.Migration):
|
||
|
dependencies = [
|
||
|
('zerver', '0294_remove_userprofile_pointer'),
|
||
|
]
|
||
|
|
||
|
operations = [
|
||
|
# Zulip has always had case-insensitive matching for email
|
||
|
# addresses on UserProfile objects. But Django's
|
||
|
# unique_together feature only supports case-sensitive
|
||
|
# indexes. So we reply the old unique_together index with a
|
||
|
# new case-insensitive index.
|
||
|
#
|
||
|
# Further, when we created the delivery_email field, we
|
||
|
# neglected to create an unique index on (realm_id,
|
||
|
# delivery_email), which meant race conditions or logic bugs
|
||
|
# could allow duplicate user accounts being created in
|
||
|
# organizations with EMAIL_ADDRESS_VISIBILITY_ADMINS. We
|
||
|
# correct this by adding the appropriate unique index there as
|
||
|
# well.
|
||
|
migrations.RunSQL("""
|
||
|
CREATE UNIQUE INDEX zerver_userprofile_realm_id_email_uniq ON zerver_userprofile (realm_id, upper(email::text));
|
||
|
CREATE UNIQUE INDEX zerver_userprofile_realm_id_delivery_email_uniq ON zerver_userprofile (realm_id, upper(delivery_email::text));
|
||
|
"""),
|
||
|
migrations.AlterUniqueTogether(
|
||
|
name='userprofile',
|
||
|
unique_together=set(),
|
||
|
),
|
||
|
]
|