summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/handlers/deactivate_account.py24
-rw-r--r--synapse/storage/registration.py12
2 files changed, 36 insertions, 0 deletions
diff --git a/synapse/handlers/deactivate_account.py b/synapse/handlers/deactivate_account.py
index 78558dd309..c00ec18627 100644
--- a/synapse/handlers/deactivate_account.py
+++ b/synapse/handlers/deactivate_account.py
@@ -31,8 +31,11 @@ class DeactivateAccountHandler(BaseHandler):
         self._device_handler = hs.get_device_handler()
         self._room_member_handler = hs.get_room_member_handler()
 
+        # Flag that indicates whether the process to part users from rooms is running
         self._user_parter_running = False
 
+        # Start the user parter loop so it can resume parting users from rooms where
+        # it left off (if it has work left to do).
         reactor.callWhenRunning(self._start_user_parting)
 
     @defer.inlineCallbacks
@@ -58,16 +61,32 @@ class DeactivateAccountHandler(BaseHandler):
         yield self.store.user_delete_threepids(user_id)
         yield self.store.user_set_password_hash(user_id, None)
 
+        # Add the user to a table of users penpding deactivation (ie.
+        # removal from all the rooms they're a member of)
         yield self.store.add_user_pending_deactivation(user_id)
 
+        # Now start the process that goes through that list and
+        # parts users from rooms (if it isn't already running)
         self._start_user_parting()
 
     def _start_user_parting(self):
+        """
+        Start the process that goes through the table of users
+        pending deactivation, if it isn't already running.
+
+        Returns:
+            None
+        """
         if not self._user_parter_running:
             run_in_background(self._user_parter_loop)
 
     @defer.inlineCallbacks
     def _user_parter_loop(self):
+        """Loop that parts deactivated users from rooms
+
+        Returns:
+            None
+        """
         self._user_parter_running = True
         logger.info("Starting user parter")
         try:
@@ -85,6 +104,11 @@ class DeactivateAccountHandler(BaseHandler):
 
     @defer.inlineCallbacks
     def _part_user(self, user_id):
+        """Causes the given user_id to leave all the rooms they're joined to
+
+        Returns:
+            None
+        """
         user = UserID.from_string(user_id)
 
         rooms_for_user = yield self.store.get_rooms_for_user(user_id)
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py
index de068a55d2..c05ce4612f 100644
--- a/synapse/storage/registration.py
+++ b/synapse/storage/registration.py
@@ -528,6 +528,10 @@ class RegistrationStore(RegistrationWorkerStore,
             defer.returnValue(ret)
 
     def add_user_pending_deactivation(self, user_id):
+        """
+        Adds a user to the table of users who need to be parted from all the rooms they're
+        in
+        """
         return self._simple_insert(
             "users_pending_deactivation",
             values={
@@ -537,6 +541,10 @@ class RegistrationStore(RegistrationWorkerStore,
         )
 
     def del_user_pending_deactivation(self, user_id):
+        """
+        Removes the given user to the table of users who need to be parted from all the
+        rooms they're in, effectively marking that user as fully deactivated.
+        """
         return self._simple_delete_one(
             "users_pending_deactivation",
             keyvalues={
@@ -546,6 +554,10 @@ class RegistrationStore(RegistrationWorkerStore,
         )
 
     def get_user_pending_deactivation(self):
+        """
+        Gets one user from the table of users waiting to be parted from all the rooms
+        they're in.
+        """
         return self._simple_select_one_onecol(
             "users_pending_deactivation",
             keyvalues={},