|
| 1 | +# Generated by Django 5.0.8 on 2024-08-31 08:09 |
| 2 | + |
| 3 | +from django.db import migrations |
| 4 | +from django.db.backends.base.schema import BaseDatabaseSchemaEditor |
| 5 | +from django.db.migrations.state import StateApps |
| 6 | + |
| 7 | + |
| 8 | +def backfill_creator_id_and_date_created_from_realm_audit_log( |
| 9 | + apps: StateApps, schema_editor: BaseDatabaseSchemaEditor |
| 10 | +) -> None: |
| 11 | + RealmAuditLog = apps.get_model("zerver", "RealmAuditLog") |
| 12 | + RealmAuditLog.USER_GROUP_CREATED = 701 |
| 13 | + NamedUserGroup = apps.get_model("zerver", "NamedUserGroup") |
| 14 | + |
| 15 | + user_group_creator_updates = [] |
| 16 | + for audit_log_entry in RealmAuditLog.objects.select_related("modified_user_group").filter( |
| 17 | + event_type=RealmAuditLog.USER_GROUP_CREATED, |
| 18 | + acting_user_id__isnull=False, |
| 19 | + ): |
| 20 | + assert audit_log_entry.modified_user_group is not None |
| 21 | + user_group = audit_log_entry.modified_user_group |
| 22 | + user_group.creator_id = audit_log_entry.acting_user_id |
| 23 | + user_group_creator_updates.append(user_group) |
| 24 | + |
| 25 | + NamedUserGroup.objects.bulk_update(user_group_creator_updates, ["creator_id"], batch_size=1000) |
| 26 | + |
| 27 | + user_group_date_created_updates = [] |
| 28 | + for audit_log_entry in RealmAuditLog.objects.select_related("modified_user_group").filter( |
| 29 | + event_type=RealmAuditLog.USER_GROUP_CREATED, |
| 30 | + event_time__isnull=False, |
| 31 | + ): |
| 32 | + assert audit_log_entry.modified_user_group is not None |
| 33 | + user_group = audit_log_entry.modified_user_group |
| 34 | + user_group.date_created = audit_log_entry.event_time |
| 35 | + user_group_date_created_updates.append(user_group) |
| 36 | + |
| 37 | + NamedUserGroup.objects.bulk_update( |
| 38 | + user_group_date_created_updates, ["date_created"], batch_size=1000 |
| 39 | + ) |
| 40 | + |
| 41 | + |
| 42 | +class Migration(migrations.Migration): |
| 43 | + dependencies = [ |
| 44 | + ("zerver", "0583_namedusergroup_creator_namedusergroup_date_created"), |
| 45 | + ] |
| 46 | + |
| 47 | + operations = [ |
| 48 | + migrations.RunPython( |
| 49 | + backfill_creator_id_and_date_created_from_realm_audit_log, |
| 50 | + reverse_code=migrations.RunPython.noop, |
| 51 | + elidable=True, |
| 52 | + ), |
| 53 | + ] |
0 commit comments