diff --git a/ckanext/zarr/actions.py b/ckanext/zarr/actions.py index e2acae4..8b3c1ee 100644 --- a/ckanext/zarr/actions.py +++ b/ckanext/zarr/actions.py @@ -181,3 +181,20 @@ def _record_dataset_duplication(dataset_id, new_dataset_id, context): log.exception(e) +def add_dataset_to_resource_type_group(resource_type, dataset_id): + groups_list = toolkit.get_action('group_list')({}) + if resource_type in groups_list: + try: + toolkit.get_action('member_create')( + data_dict={ + 'id': resource_type, + 'object': dataset_id, + 'object_type': 'package', + 'capacity': 'public' + } + ) + except Exception as e: + log.error(f"Failed to add dataset {dataset_id} to group {resource_type}") + log.exception(e) + else: + log.warning(f"Group {resource_type} does not exist. Dataset {dataset_id} not added to any group.") diff --git a/ckanext/zarr/plugin.py b/ckanext/zarr/plugin.py index 330b2d1..139055d 100644 --- a/ckanext/zarr/plugin.py +++ b/ckanext/zarr/plugin.py @@ -91,7 +91,13 @@ def after_dataset_delete(self, context, data_dict): def after_dataset_update(self, context, data_dict): if data_dict.get('private'): zarr_upload.add_activity(context, data_dict, "changed") + resource_type = data_dict.get('resource_type') + if resource_type: + zarr_actions.add_dataset_to_resource_type_group(resource_type, data_dict['id']) def after_dataset_create(self, context, data_dict): if data_dict.get('private'): zarr_upload.add_activity(context, data_dict, "new") + resource_type = data_dict.get('resource_type') + if resource_type: + zarr_actions.add_dataset_to_resource_type_group(resource_type, data_dict['id'])