mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	Tweaked by tabbott to use clearer conventions and to document it in the upgrade notes. Fixes #15772.
		
			
				
	
	
		
			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(),
 | 
						|
        ),
 | 
						|
    ]
 |