Many docstrings

This commit is contained in:
David Baker 2018-05-10 12:20:40 +01:00
parent 4d298506dd
commit 217bc53c98
2 changed files with 36 additions and 0 deletions

View File

@ -31,8 +31,11 @@ class DeactivateAccountHandler(BaseHandler):
self._device_handler = hs.get_device_handler() self._device_handler = hs.get_device_handler()
self._room_member_handler = hs.get_room_member_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 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) reactor.callWhenRunning(self._start_user_parting)
@defer.inlineCallbacks @defer.inlineCallbacks
@ -58,16 +61,32 @@ class DeactivateAccountHandler(BaseHandler):
yield self.store.user_delete_threepids(user_id) yield self.store.user_delete_threepids(user_id)
yield self.store.user_set_password_hash(user_id, None) 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) 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() self._start_user_parting()
def _start_user_parting(self): 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: if not self._user_parter_running:
run_in_background(self._user_parter_loop) run_in_background(self._user_parter_loop)
@defer.inlineCallbacks @defer.inlineCallbacks
def _user_parter_loop(self): def _user_parter_loop(self):
"""Loop that parts deactivated users from rooms
Returns:
None
"""
self._user_parter_running = True self._user_parter_running = True
logger.info("Starting user parter") logger.info("Starting user parter")
try: try:
@ -85,6 +104,11 @@ class DeactivateAccountHandler(BaseHandler):
@defer.inlineCallbacks @defer.inlineCallbacks
def _part_user(self, user_id): 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) user = UserID.from_string(user_id)
rooms_for_user = yield self.store.get_rooms_for_user(user_id) rooms_for_user = yield self.store.get_rooms_for_user(user_id)

View File

@ -528,6 +528,10 @@ class RegistrationStore(RegistrationWorkerStore,
defer.returnValue(ret) defer.returnValue(ret)
def add_user_pending_deactivation(self, user_id): 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( return self._simple_insert(
"users_pending_deactivation", "users_pending_deactivation",
values={ values={
@ -537,6 +541,10 @@ class RegistrationStore(RegistrationWorkerStore,
) )
def del_user_pending_deactivation(self, user_id): 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( return self._simple_delete_one(
"users_pending_deactivation", "users_pending_deactivation",
keyvalues={ keyvalues={
@ -546,6 +554,10 @@ class RegistrationStore(RegistrationWorkerStore,
) )
def get_user_pending_deactivation(self): 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( return self._simple_select_one_onecol(
"users_pending_deactivation", "users_pending_deactivation",
keyvalues={}, keyvalues={},