From f9b5310fce351818fe89493dd3395aefece52655 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Sat, 27 Jun 2020 23:32:12 +0200 Subject: [PATCH] Fix user account not deleted when demoted to guest --- allianceauth/authentication/backends.py | 7 +++++++ .../modules/discord/tests/test_integration.py | 14 ++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/allianceauth/authentication/backends.py b/allianceauth/authentication/backends.py index 2ef95401..9d88f29b 100644 --- a/allianceauth/authentication/backends.py +++ b/allianceauth/authentication/backends.py @@ -11,9 +11,16 @@ logger = logging.getLogger(__name__) class StateBackend(ModelBackend): @staticmethod def _get_state_permissions(user_obj): + """returns permissions for state of given user object""" + """ profile_state_field = UserProfile._meta.get_field('state') user_state_query = 'state__%s__user' % profile_state_field.related_query_name() return Permission.objects.filter(**{user_state_query: user_obj}) + """ + if hasattr(user_obj, "profile") and user_obj.profile: + return Permission.objects.filter(state=user_obj.profile.state) + else: + return [] def get_state_permissions(self, user_obj, obj=None): return self._get_permissions(user_obj, obj, 'state') diff --git a/allianceauth/services/modules/discord/tests/test_integration.py b/allianceauth/services/modules/discord/tests/test_integration.py index 8fd2eaca..ca5715d2 100644 --- a/allianceauth/services/modules/discord/tests/test_integration.py +++ b/allianceauth/services/modules/discord/tests/test_integration.py @@ -45,6 +45,7 @@ from ..models import DiscordUser logger = logging.getLogger('allianceauth') ROLE_MEMBER = create_role(99, 'Member') +ROLE_BLUE = create_role(98, 'Blue') # Putting all requests to Discord into objects so we can compare them better DiscordRequest = namedtuple('DiscordRequest', ['method', 'url']) @@ -119,7 +120,7 @@ class TestServiceFeatures(TransactionTestCase): self.member_state.permissions.add(permission) # Test user - self.user = AuthUtils.create_member(TEST_USER_NAME) + self.user = AuthUtils.create_user(TEST_USER_NAME) self.main = AuthUtils.add_main_character_2( self.user, TEST_MAIN_NAME, @@ -130,11 +131,12 @@ class TestServiceFeatures(TransactionTestCase): disconnect_signals=True ) self.member_state.member_characters.add(self.main) - self.discord_user = DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) # verify user is a member and has an account self.user = User.objects.get(pk=self.user.pk) self.assertEqual(self.user.profile.state, self.member_state) + + self.discord_user = DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) self.assertTrue(DiscordUser.objects.user_has_account(self.user)) def test_name_of_main_changes(self, requests_mocker): @@ -209,8 +211,7 @@ class TestServiceFeatures(TransactionTestCase): expected = list() self.assertListEqual(requests_made, expected) - - """ + def test_when_member_is_demoted_to_guest_then_his_account_is_deleted( self, requests_mocker ): @@ -236,8 +237,9 @@ class TestServiceFeatures(TransactionTestCase): DiscordRequest(r.method, r.url) for r in requests_mocker.request_history ] self.assertIn(remove_guild_member_request, requests_made) - - def test_when_member_is_demoted_to_blue_state_then_roles_are_updated_accordingly( + + """ + def test_when_member_changes_to_blue_state_then_roles_are_updated_accordingly( self, requests_mocker ): # request mocks