Skip to content

Commit 648dd10

Browse files
[Fixes GeoNode#10525] set/unset batch permissions on groups raise an error (GeoNode#10526)
* [Fixes GeoNode#10525] set/unset batch permissions on groups raise an error * [Fixes GeoNode#10525] set/unset batch permissions on groups raise an error
1 parent 153736b commit 648dd10

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

geonode/layers/tests.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
from geonode.base.models import TopicCategory, License, Region, Link
6868
from geonode.utils import check_ogc_backend, set_resource_default_links
6969
from geonode.layers.metadata import convert_keyword, set_metadata, parse_metadata
70+
from geonode.groups.models import GroupProfile
7071

7172
from geonode.layers.utils import (
7273
is_sld_upload_only,
@@ -925,6 +926,50 @@ def test_assign_remove_permissions(self):
925926
# "norman" has no permissions
926927
self.assertEqual(_c, 0)
927928

929+
@on_ogc_backend(geoserver.BACKEND_PACKAGE)
930+
def test_assign_remove_permissions_for_groups(self):
931+
# Assing
932+
layer = Dataset.objects.all().first()
933+
perm_spec = layer.get_all_level_info()
934+
group_profile = GroupProfile.objects.create(slug="group1", title="group1", access="public")
935+
self.assertNotIn(group_profile, perm_spec["groups"])
936+
937+
# giving manage permissions to the group
938+
utils.set_datasets_permissions("manage", resources_names=[layer.name], groups_names=["group1"], delete_flag=False, verbose=True)
939+
perm_spec = layer.get_all_level_info()
940+
expected = {
941+
'change_dataset_data', 'change_dataset_style', 'change_resourcebase',
942+
'change_resourcebase_metadata', 'change_resourcebase_permissions',
943+
'delete_resourcebase', 'download_resourcebase', 'publish_resourcebase',
944+
'view_resourcebase'
945+
}
946+
# checking the perms list
947+
self.assertSetEqual(
948+
expected,
949+
set(perm_spec['groups'][group_profile.group])
950+
)
951+
952+
# Chaning perms to the group from manage to read
953+
utils.set_datasets_permissions("view", resources_names=[layer.name], groups_names=["group1"], delete_flag=False, verbose=True)
954+
perm_spec = layer.get_all_level_info()
955+
expected = {
956+
'view_resourcebase'
957+
}
958+
# checking the perms list
959+
self.assertSetEqual(
960+
expected,
961+
set(perm_spec['groups'][group_profile.group])
962+
)
963+
964+
# Chaning perms to the group from manage to read
965+
utils.set_datasets_permissions("view", resources_names=[layer.name], groups_names=["group1"], delete_flag=True, verbose=True)
966+
perm_spec = layer.get_all_level_info()
967+
# checking the perms list
968+
self.assertTrue(group_profile.group not in perm_spec['groups'])
969+
970+
if group_profile:
971+
group_profile.delete()
972+
928973
def test_xml_form_without_files_should_raise_500(self):
929974
files = dict()
930975
files['permissions'] = '{}'

geonode/layers/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ def set_datasets_permissions(permissions_name, resources_names=None, users_usern
494494
final_perms_payload["groups"] = {
495495
_group: _perms
496496
for _group, _perms in perms_spec_compact_resource.extended["groups"].items()
497-
if _user not in copy_compact_perms.extended["groups"]
497+
if _group not in copy_compact_perms.extended["groups"]
498498
}
499499
if final_perms_payload["users"].get("AnonymousUser") is None and final_perms_payload["groups"].get("anonymous"):
500500
final_perms_payload["groups"].pop("anonymous")

0 commit comments

Comments
 (0)