Exemplo n.º 1
0
 def test_remove_groups(self):
     """Test the removal of groups according to a name"""
     name = "Foo"
     create_groups(name)
     remove_groups(name)
     community_groups = Group.objects.filter(name__startswith=name)
     self.assertEqual(list(community_groups), [])
Exemplo n.º 2
0
 def test_get_groups(self):
     """Test getting groups according to community name"""
     groups = get_groups("Foo")
     self.assertSequenceEqual(groups, [])
     name = "Bar"
     create_groups(name)
     community_groups = Group.objects.all()
     groups = get_groups("Bar")
     self.assertCountEqual(community_groups, groups)
     create_groups("New")
     groups = get_groups("Bar")
     self.assertCountEqual(community_groups, groups)
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
    def test_rename_groups(self):
        """Test the renaming of groups according to a new name"""
        old_name = "Foo"
        new_name = "Bar"
        create_groups(old_name)
        groups = rename_groups(old_name, new_name)
        expected_group_names = []
        for key, group_name in groups_templates.items():
            expected_group_names.append(group_name.format(new_name))
        group_names = []
        for group in groups:
            group_names.append(group.name)
        self.assertCountEqual(expected_group_names, group_names)

        community_groups = Group.objects.filter(name__startswith=new_name)
        self.assertCountEqual(community_groups, groups)
        old_community_groups = Group.objects.filter(name__startswith=old_name)
        self.assertSequenceEqual(old_community_groups, [])
Exemplo n.º 5
0
 def test_leave_groups(self):
     """Test SystersUser leaving all Community groups"""
     name = "Baz"
     self.systers_user.leave_groups(name)
     self.assertSequenceEqual(self.systers_user.user.groups.all(), [])
     create_groups(name)
     content_manager_group = Group.objects.get(name="Baz: Content Manager")
     self.systers_user.join_group(content_manager_group)
     self.assertSequenceEqual(self.systers_user.user.groups.all(),
                              [content_manager_group])
     self.systers_user.leave_groups(name)
     self.assertSequenceEqual(self.systers_user.user.groups.all(), [])
     other_name = "Foo"
     create_groups(other_name)
     admin_group = Group.objects.get(name="Foo: Community Admin")
     self.systers_user.join_group(admin_group)
     self.systers_user.join_group(content_manager_group)
     self.assertCountEqual(list(self.systers_user.user.groups.all()),
                           [content_manager_group, admin_group])
     self.systers_user.leave_groups(name)
     self.assertSequenceEqual(self.systers_user.user.groups.all(),
                              [admin_group])
Exemplo n.º 6
0
 def test_leave_groups(self):
     """Test SystersUser leaving all Community groups"""
     name = "Baz"
     self.systers_user.leave_groups(name)
     self.assertSequenceEqual(self.systers_user.user.groups.all(), [])
     create_groups(name)
     content_manager_group = Group.objects.get(name="Baz: Content Manager")
     self.systers_user.join_group(content_manager_group)
     self.assertSequenceEqual(self.systers_user.user.groups.all(),
                              [content_manager_group])
     self.systers_user.leave_groups(name)
     self.assertSequenceEqual(self.systers_user.user.groups.all(), [])
     other_name = "Foo"
     create_groups(other_name)
     admin_group = Group.objects.get(name="Foo: Community Admin")
     self.systers_user.join_group(admin_group)
     self.systers_user.join_group(content_manager_group)
     self.assertCountEqual(list(self.systers_user.user.groups.all()),
                           [content_manager_group, admin_group])
     self.systers_user.leave_groups(name)
     self.assertSequenceEqual(self.systers_user.user.groups.all(),
                              [admin_group])
Exemplo n.º 7
0
    def test_create_groups(self):
        """Test the creation of groups according to a name"""
        name = "Foo"
        groups = create_groups(name)
        expected_group_names = []
        for key, group_name in groups_templates.items():
            expected_group_names.append(group_name.format(name))
        group_names = []
        for group in groups:
            group_names.append(group.name)
        self.assertCountEqual(list(expected_group_names), group_names)

        community_groups = Group.objects.filter(name__startswith=name)
        self.assertCountEqual(community_groups, groups)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 def test_get_member_groups(self):
     """Test getting groups of which the user is a member"""
     groups = create_groups("Bar")
     self.assertEqual(self.systers_user.get_member_groups(groups), [])
     first_group = groups[0]
     self.systers_user.join_group(first_group)
     self.assertSequenceEqual(self.systers_user.get_member_groups(groups),
                              [first_group])
     last_group = groups[-1]
     self.systers_user.join_group(last_group)
     self.assertCountEqual(self.systers_user.get_member_groups(groups),
                           [first_group, last_group])
     group = Group.objects.create(name="Dummy")
     self.systers_user.join_group(group)
     self.assertCountEqual(self.systers_user.get_member_groups(groups),
                           [first_group, last_group])
Exemplo n.º 10
0
 def test_get_member_groups(self):
     """Test getting groups of which the user is a member"""
     groups = create_groups("Bar")
     self.assertEqual(self.systers_user.get_member_groups(groups), [])
     first_group = groups[0]
     self.systers_user.join_group(first_group)
     self.assertSequenceEqual(self.systers_user.get_member_groups(groups),
                              [first_group])
     last_group = groups[-1]
     self.systers_user.join_group(last_group)
     self.assertSequenceEqual(self.systers_user.get_member_groups(groups),
                              [first_group, last_group])
     group = Group.objects.create(name="Dummy")
     self.systers_user.join_group(group)
     self.assertSequenceEqual(self.systers_user.get_member_groups(groups),
                              [first_group, last_group])
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
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()