Exemple #1
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()
Exemple #2
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)
Exemple #3
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)
Exemple #4
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()