From c60de4b69a694b758dbbd423fea915b37890d064 Mon Sep 17 00:00:00 2001 From: Deimos Date: Mon, 25 Mar 2019 23:25:25 -0600 Subject: [PATCH] Clear/reset data for deleted users after 30 days --- tildes/scripts/clean_private_data.py | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tildes/scripts/clean_private_data.py b/tildes/scripts/clean_private_data.py index 2ea9ce9..abf0ae9 100644 --- a/tildes/scripts/clean_private_data.py +++ b/tildes/scripts/clean_private_data.py @@ -19,6 +19,7 @@ from tildes.lib.database import get_session_from_config from tildes.models.comment import Comment from tildes.models.log import Log from tildes.models.topic import Topic, TopicVisit +from tildes.models.user import User # sensitive data older than this should be removed @@ -57,6 +58,7 @@ class DataCleaner: self.clean_old_deleted_comments() self.clean_old_deleted_topics() + self.clean_old_deleted_users() def delete_old_log_entries(self) -> None: """Delete all log entries older than the retention cutoff. @@ -140,3 +142,44 @@ class DataCleaner: ) self.db_session.commit() logging.info(f"Cleaned {updated} old deleted topics.") + + def clean_old_deleted_users(self) -> None: + """Clean the data of old deleted users.""" + updated = ( + self.db_session.query(User) + .filter( + User.is_deleted == True, # noqa + User.deleted_time <= self.retention_cutoff, # type: ignore + User.password_hash != "", + ) + .update( + { + "password_hash": "", + "email_address_hash": DEFAULT, + "email_address_note": DEFAULT, + "two_factor_enabled": DEFAULT, + "two_factor_secret": DEFAULT, + "two_factor_backup_codes": DEFAULT, + "inviter_id": DEFAULT, + "invite_codes_remaining": DEFAULT, + "track_comment_visits": DEFAULT, + "collapse_old_comments": DEFAULT, + "auto_mark_notifications_read": DEFAULT, + "open_new_tab_external": DEFAULT, + "open_new_tab_internal": DEFAULT, + "open_new_tab_text": DEFAULT, + "theme_default": DEFAULT, + "permissions": DEFAULT, + "home_default_order": DEFAULT, + "home_default_period": DEFAULT, + "_filtered_topic_tags": DEFAULT, + "comment_label_weight": DEFAULT, + "last_exemplary_label_time": DEFAULT, + "_bio_markdown": DEFAULT, + "bio_rendered_html": DEFAULT, + }, + synchronize_session=False, + ) + ) + self.db_session.commit() + logging.info(f"Cleaned {updated} old deleted users.")