Skip to content

Commit

Permalink
Enable allow_partial_update for group update
Browse files Browse the repository at this point in the history
Listen to allow_partial_update in the context when saving a group, and
use it in the group controller. This fixes issue #2854 where all an
organizations datasets were being removed on updating an organization
(with the organizations plugins enabled)
  • Loading branch information
Sean Hammond authored and tobes committed Aug 20, 2012
1 parent c7cdab4 commit 0003724
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 15 deletions.
1 change: 1 addition & 0 deletions ckan/controllers/group.py
Expand Up @@ -340,6 +340,7 @@ def _save_edit(self, id, context):
tuplize_dict(parse_params(request.params))))
context['message'] = data_dict.get('log_message', '')
data_dict['id'] = id
context['allow_partial_update'] = True
group = get_action('group_update')(context, data_dict)

if id != group['name']:
Expand Down
31 changes: 16 additions & 15 deletions ckan/lib/dictization/model_save.py
Expand Up @@ -382,21 +382,22 @@ def group_dict_save(group_dict, context):

context['group'] = group

pkgs_edited = group_member_save(context, group_dict, 'packages')
group_users_changed = group_member_save(context, group_dict, 'users')
group_groups_changed = group_member_save(context, group_dict, 'groups')
group_tags_changed = group_member_save(context, group_dict, 'tags')
log.debug('Group save membership changes - Packages: %r Users: %r '
'Groups: %r Tags: %r', pkgs_edited, group_users_changed,
group_groups_changed, group_tags_changed)

# We will get a list of packages that we have either added or
# removed from the group, and trigger a re-index.
package_ids = pkgs_edited['removed']
package_ids.extend( pkgs_edited['added'] )
if package_ids:
session.commit()
map( rebuild, package_ids )
if group_dict.get('packages', None) or not allow_partial_update:
pkgs_edited = group_member_save(context, group_dict, 'packages')
group_users_changed = group_member_save(context, group_dict, 'users')
group_groups_changed = group_member_save(context, group_dict, 'groups')
group_tags_changed = group_member_save(context, group_dict, 'tags')
log.debug('Group save membership changes - Packages: %r Users: %r '
'Groups: %r Tags: %r', pkgs_edited, group_users_changed,
group_groups_changed, group_tags_changed)

# We will get a list of packages that we have either added or
# removed from the group, and trigger a re-index.
package_ids = pkgs_edited['removed']
package_ids.extend( pkgs_edited['added'] )
if package_ids:
session.commit()
map( rebuild, package_ids )

extras = group_extras_save(group_dict.get("extras", {}), context)
if extras or not allow_partial_update:
Expand Down

0 comments on commit 0003724

Please sign in to comment.