Skip to content

Commit

Permalink
[#2939] Do not allow update of group dataset for new templates
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Nov 30, 2012
1 parent 01d1718 commit e993a52
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
13 changes: 12 additions & 1 deletion ckan/lib/dictization/model_save.py
Expand Up @@ -388,6 +388,7 @@ def group_dict_save(group_dict, context):
session = context["session"]
group = context.get("group")
allow_partial_update = context.get("allow_partial_update", False)
prevent_packages_update = context.get("prevent_packages_update", False)

Group = model.Group
if group:
Expand All @@ -399,7 +400,17 @@ def group_dict_save(group_dict, context):

context['group'] = group

pkgs_edited = group_member_save(context, group_dict, 'packages')
# Under the new org rules we do not want to be able to update datasets
# via group edit so we need a way to prevent this. It may be more
# sensible in future to send a list of allowed/disallowed updates for
# groups, users, tabs etc.
if not prevent_packages_update:
pkgs_edited = group_member_save(context, group_dict, 'packages')
else:
pkgs_edited = {
'added': [],
'removed': []
}
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')
Expand Down
8 changes: 8 additions & 0 deletions ckan/logic/action/update.py
Expand Up @@ -2,7 +2,9 @@
import datetime

from pylons.i18n import _
from pylons import config
from vdm.sqlalchemy.base import SQLAlchemySession
from paste.deploy.converters import asbool

import ckan.authz as authz
import ckan.plugins as plugins
Expand Down Expand Up @@ -442,6 +444,12 @@ def _group_or_org_update(context, data_dict, is_org=False):
else:
rev.message = _(u'REST API: Update object %s') % data.get("name")

# when editing an org we do not want to update the packages if using the
# new templates.
if ((not is_org)
and not asbool(config.get('ckan.legacy_templates', False))
and 'api_version' not in context):
context['prevent_packages_update'] = True
group = model_save.group_dict_save(data, context)

if parent:
Expand Down
4 changes: 2 additions & 2 deletions ckan/templates/group/snippets/group_form.html
Expand Up @@ -48,7 +48,7 @@
) }}
{% endfor %}
{% endblock %}

{# Do not update datasets here
{% block dataset_fields %}
{% if data.packages %}
<div class="control-group">
Expand All @@ -63,7 +63,7 @@
</div>
</div>
{% endif %}

#}
{% set dataset_name = 'packages__%s__name' % data.packages|length %}
{% set dataset_attrs = {'data-module': 'autocomplete', 'data-module-source': '/dataset/autocomplete?q=?'} %}
{{ form.input(dataset_name, label=_('Add Dataset'), id="field-dataset", value=data[dataset_name], classes=['control-medium'], attrs=dataset_attrs) }}
Expand Down

0 comments on commit e993a52

Please sign in to comment.