From b56b9d570dca9370fad5c170ce5c95ca6dd070d0 Mon Sep 17 00:00:00 2001 From: Mateusz Mandera Date: Fri, 7 Mar 2025 03:43:02 +0800 Subject: [PATCH] export: Reset settings to default for users not in exportable_user_ids. These users didn't consent to having their private data exported. Therefore, correct handling of these users should involve scrubbing their settings to just match the realm defaults. --- zerver/lib/export.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zerver/lib/export.py b/zerver/lib/export.py index a385c0ae30..38e83e5deb 100644 --- a/zerver/lib/export.py +++ b/zerver/lib/export.py @@ -1199,6 +1199,7 @@ def custom_fetch_user_profile(response: TableData, context: Context) -> None: normal_rows: list[Record] = [] dummy_rows: list[Record] = [] + realm_user_default = RealmUserDefault.objects.get(realm=realm) for row in rows: if exportable_user_ids is not None: if row["id"] in exportable_user_ids: @@ -1208,6 +1209,9 @@ def custom_fetch_user_profile(response: TableData, context: Context) -> None: # inactive is_mirror_dummy users. row["is_mirror_dummy"] = True row["is_active"] = False + for settings_name in RealmUserDefault.property_types: + value = getattr(realm_user_default, settings_name) + row[settings_name] = value if row["is_mirror_dummy"]: dummy_rows.append(row)