From 6837f94e5936900615f33c05f846300a1020a43c Mon Sep 17 00:00:00 2001 From: Adarnof Date: Fri, 3 Nov 2017 19:20:31 -0400 Subject: [PATCH] Disable SeAT accounts instead of deleting. (#915) See eveseat/web@1abb402 --- services/modules/seat/manager.py | 14 +++++++++++++- services/modules/seat/tasks.py | 2 +- services/modules/seat/tests.py | 8 ++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/services/modules/seat/manager.py b/services/modules/seat/manager.py index 115936c0..5a738c48 100644 --- a/services/modules/seat/manager.py +++ b/services/modules/seat/manager.py @@ -78,7 +78,7 @@ class SeatManager: @classmethod def enable_user(cls, username): """ Enable user """ - ret = cls.exec_request('user/{}'.format(username), 'put', active=1) + ret = cls.exec_request('user/{}'.format(username), 'put', account_status=1) logger.debug(ret) if cls._response_ok(ret): logger.info("Enabled SeAT user with username %s" % username) @@ -86,6 +86,18 @@ class SeatManager: logger.info("Failed to enabled SeAT user with username %s" % username) return None + @classmethod + def disable_user(cls, username): + """ Disable user """ + cls.update_roles(username, []) + ret = cls.exec_request('user/{}'.format(username), 'put', account_status=0) + logger.debug(ret) + if cls._response_ok(ret): + logger.info("Disabled SeAT user with username %s" % username) + return username + logger.info("Failed to disable SeAT user with username %s" % username) + return None + @classmethod def _check_email_changed(cls, username, email): """Compares email to one set on SeAT""" diff --git a/services/modules/seat/tasks.py b/services/modules/seat/tasks.py index 8781d939..d8d14eab 100644 --- a/services/modules/seat/tasks.py +++ b/services/modules/seat/tasks.py @@ -28,7 +28,7 @@ class SeatTasks: @classmethod def delete_user(cls, user, notify_user=False): - if cls.has_account(user) and SeatManager.delete_user(user.seat.username): + if cls.has_account(user) and SeatManager.disable_user(user.seat.username): user.seat.delete() logger.info("Successfully deactivated SeAT for user %s" % user) if notify_user: diff --git a/services/modules/seat/tests.py b/services/modules/seat/tests.py index 190a26cb..75e8569d 100644 --- a/services/modules/seat/tests.py +++ b/services/modules/seat/tests.py @@ -100,10 +100,10 @@ class SeatHooksTestCase(TestCase): # Test none user is deleted none_user = User.objects.get(username=self.none_user) - manager.delete_user.return_value = 'abc123' + manager.disable_user.return_value = 'abc123' SeatUser.objects.create(user=none_user, username='abc123') service.validate_user(none_user) - self.assertTrue(manager.delete_user.called) + self.assertTrue(manager.disable_user.called) with self.assertRaises(ObjectDoesNotExist): none_seat = User.objects.get(username=self.none_user).seat @@ -115,7 +115,7 @@ class SeatHooksTestCase(TestCase): result = service.delete_user(member) self.assertTrue(result) - self.assertTrue(manager.delete_user.called) + self.assertTrue(manager.disable_user.called) with self.assertRaises(ObjectDoesNotExist): seat_user = User.objects.get(username=self.member).seat @@ -177,7 +177,7 @@ class SeatViewsTestCase(TestCase): response = self.client.get(urls.reverse('auth_deactivate_seat')) - self.assertTrue(manager.delete_user.called) + self.assertTrue(manager.disable_user.called) self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200) with self.assertRaises(ObjectDoesNotExist): seat_user = User.objects.get(pk=self.member.pk).seat