def manage_community_groups(sender, instance, created, **kwargs): """Manage user groups and user permissions for a particular Community""" name = instance.name if created: groups = create_groups(name, groups_templates) assign_permissions( instance, groups, groups_templates, group_permissions) community_admin_group = next( g for g in groups if g.name == COMMUNITY_ADMIN.format(name)) instance.admin.join_group(community_admin_group) instance.add_member(instance.admin) instance.save() else: if name != instance.original_name and instance.original_name: rename_groups(instance.original_name, instance.name) if instance.admin != instance.original_admin and \ instance.original_admin is not None: community_admin_group = \ get_object_or_404(Group, name=COMMUNITY_ADMIN.format(name)) instance.original_admin.leave_group( community_admin_group) instance.admin.join_group(community_admin_group) if instance.admin not in instance.members.all(): instance.add_member(instance.admin) instance.save()
def test_assign_permissions(self): """Test assignment of permissions to community groups""" User.objects.create(username='******', password='******') systers_user = SystersUser.objects.get() community = Community.objects.create(name="Foo", slug="foo", order=1, admin=systers_user) name = community.name groups = create_groups(name) assign_permissions(community, groups) for key, value in group_permissions.items(): group = Group.objects.get(name=groups_templates[key].format(name)) group_perms = [p.codename for p in list(group.permissions.all())] group_perms += get_perms(group, community) self.assertCountEqual(group_perms, value)
def test_assign_permissions(self): """Test assignment of permissions to community""" self.user = User.objects.create(username='******', password='******') systers_user = SystersUser.objects.get(user=self.user) country = Country.objects.create(name='Bar', continent='AS') location = City.objects.create(name='Foo', display_name='Foo', country=country) community = Community.objects.create(name="Foo", slug="foo", order=1, location=location, admin=systers_user) name = community.name groups = create_groups(name, groups_templates) assign_permissions(community, groups, groups_templates, group_permissions) for key, value in group_permissions.items(): group = Group.objects.get(name=groups_templates[key].format(name)) group_perms = [p.codename for p in list(group.permissions.all())] group_perms += get_perms(group, community) self.assertCountEqual(group_perms, value)
def manage_community_groups(sender, instance, created, **kwargs): """Manage user groups and user permissions for a particular Community""" name = instance.name if created: groups = create_groups(name) assign_permissions(instance, groups) community_admin_group = next(g for g in groups if g.name == COMMUNITY_ADMIN.format(name)) instance.admin.join_group(community_admin_group) instance.add_member(instance.admin) instance.save() else: if name != instance.original_name and instance.original_name: rename_groups(instance.original_name, instance.name) if instance.admin != instance.original_admin and \ instance.original_admin is not None: community_admin_group = \ get_object_or_404(Group, name=COMMUNITY_ADMIN.format(name)) instance.original_admin.leave_group(community_admin_group) instance.admin.join_group(community_admin_group) if instance.admin not in instance.members.all(): instance.add_member(instance.admin) instance.save()