mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-07 15:46:20 +01:00
Publically joinable Groups (#697)
* Add public field to AuthGroup * Add permission for users to join non-public groups By default this permission will be applied to the "Member" group to maintain the current behaviour. * Allow users to join public groups Users without the 'groupmanagement.request_groups' permission will be able to join groups marked as public but will not be able to see or join any other groups. * Prevent None state change from purging groups Currently when a user drops from Blue or Member state all groups and permissions are discarded. This softens that approach by not removing public groups and creates a distinction between the two activities. An argument could maybe be made for not removing permissions on a state change, but that is beyond the scope of this change. * Correct syntax for removing filtered groups * Add unit tests for disable user and member * Update services signals tests * Correct mocking call * Remove permissions checking from menu item
This commit is contained in:
@@ -10,7 +10,7 @@ from django.db.models.signals import pre_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
from alliance_auth.hooks import get_hooks
|
||||
from authentication.tasks import disable_member
|
||||
from authentication.tasks import disable_user
|
||||
from authentication.tasks import set_state
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -39,7 +39,7 @@ def m2m_changed_user_groups(sender, instance, action, *args, **kwargs):
|
||||
@receiver(pre_delete, sender=User)
|
||||
def pre_delete_user(sender, instance, *args, **kwargs):
|
||||
logger.debug("Received pre_delete from %s" % instance)
|
||||
disable_member(instance)
|
||||
disable_user(instance)
|
||||
|
||||
|
||||
@receiver(pre_save, sender=User)
|
||||
@@ -53,7 +53,7 @@ def pre_save_user(sender, instance, *args, **kwargs):
|
||||
old_instance = User.objects.get(pk=instance.pk)
|
||||
if old_instance.is_active and not instance.is_active:
|
||||
logger.info("Disabling services for inactivation of user %s" % instance)
|
||||
disable_member(instance)
|
||||
disable_user(instance)
|
||||
elif instance.is_active and not old_instance.is_active:
|
||||
logger.info("Assessing state of reactivated user %s" % instance)
|
||||
set_state(instance)
|
||||
|
||||
@@ -47,27 +47,27 @@ class ServicesSignalsTestCase(TestCase):
|
||||
args, kwargs = svc.update_groups.call_args
|
||||
self.assertEqual(self.member, args[0])
|
||||
|
||||
@mock.patch('services.signals.disable_member')
|
||||
def test_pre_delete_user(self, disable_member):
|
||||
@mock.patch('services.signals.disable_user')
|
||||
def test_pre_delete_user(self, disable_user):
|
||||
"""
|
||||
Test that disable_member is called when a user is deleted
|
||||
"""
|
||||
self.none_user.delete()
|
||||
|
||||
self.assertTrue(disable_member.called)
|
||||
args, kwargs = disable_member.call_args
|
||||
self.assertTrue(disable_user.called)
|
||||
args, kwargs = disable_user.call_args
|
||||
self.assertEqual(self.none_user, args[0])
|
||||
|
||||
@mock.patch('services.signals.disable_member')
|
||||
def test_pre_save_user_inactivation(self, disable_member):
|
||||
@mock.patch('services.signals.disable_user')
|
||||
def test_pre_save_user_inactivation(self, disable_user):
|
||||
"""
|
||||
Test a user set inactive has disable_member called
|
||||
"""
|
||||
self.member.is_active = False
|
||||
self.member.save() # Signal Trigger
|
||||
|
||||
self.assertTrue(disable_member.called)
|
||||
args, kwargs = disable_member.call_args
|
||||
self.assertTrue(disable_user.called)
|
||||
args, kwargs = disable_user.call_args
|
||||
self.assertEqual(self.member, args[0])
|
||||
|
||||
@mock.patch('services.signals.set_state')
|
||||
|
||||
Reference in New Issue
Block a user