mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Generated by Django 5.0.9 on 2024-10-10 10:41
 | 
						|
 | 
						|
from django.db import migrations, transaction
 | 
						|
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
 | 
						|
from django.db.migrations.state import StateApps
 | 
						|
from django.db.models import Max, OuterRef
 | 
						|
 | 
						|
 | 
						|
def remap_can_manage_all_groups_for_existing_realms(
 | 
						|
    apps: StateApps, schema_editor: BaseDatabaseSchemaEditor
 | 
						|
) -> None:
 | 
						|
    Realm = apps.get_model("zerver", "Realm")
 | 
						|
    NamedUserGroup = apps.get_model("zerver", "NamedUserGroup")
 | 
						|
    max_id = NamedUserGroup.objects.aggregate(Max("id"))["id__max"]
 | 
						|
 | 
						|
    if max_id is None:
 | 
						|
        # Do nothing if there are no user groups on the server.
 | 
						|
        return
 | 
						|
 | 
						|
    with transaction.atomic():
 | 
						|
        # Since can_manage_group, can_add_members_group, etc. have
 | 
						|
        # migrated to the nearest possible value from
 | 
						|
        # user_group_edit_policy, we want to set
 | 
						|
        # can_manage_all_groups to the most restrictive setting
 | 
						|
        # previously possible. We've chosen administrators as the
 | 
						|
        # value here since the highest possible
 | 
						|
        # user_group_edit_policy was with role administrators.
 | 
						|
        Realm.objects.update(
 | 
						|
            can_manage_all_groups=NamedUserGroup.objects.filter(
 | 
						|
                name="role:administrators", realm=OuterRef("id"), is_system_group=True
 | 
						|
            ).values("pk")
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
class Migration(migrations.Migration):
 | 
						|
    atomic = False
 | 
						|
    dependencies = [
 | 
						|
        ("zerver", "0601_alter_namedusergroup_can_add_members_group"),
 | 
						|
    ]
 | 
						|
 | 
						|
    operations = [
 | 
						|
        migrations.RunPython(
 | 
						|
            remap_can_manage_all_groups_for_existing_realms,
 | 
						|
            elidable=True,
 | 
						|
            reverse_code=migrations.RunPython.noop,
 | 
						|
        )
 | 
						|
    ]
 |