Skip to content

Commit

Permalink
Merge pull request #3133 from ckan/2661-owner-org-update
Browse files Browse the repository at this point in the history
Allow package_owner_org_update action to be called stand-alone
  • Loading branch information
amercader committed Jun 30, 2016
2 parents 59d1043 + f240a8c commit 7173fbe
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 2 deletions.
1 change: 1 addition & 0 deletions ckan/logic/action/create.py
Expand Up @@ -197,6 +197,7 @@ def package_create(context, data_dict):
context_org_update = context.copy()
context_org_update['ignore_auth'] = True
context_org_update['defer_commit'] = True
context_org_update['add_revision'] = False
_get_action('package_owner_org_update')(context_org_update,
{'id': pkg.id,
'organization_id': pkg.owner_org})
Expand Down
13 changes: 11 additions & 2 deletions ckan/logic/action/update.py
Expand Up @@ -292,6 +292,7 @@ def package_update(context, data_dict):
context_org_update = context.copy()
context_org_update['ignore_auth'] = True
context_org_update['defer_commit'] = True
context_org_update['add_revision'] = False
_get_action('package_owner_org_update')(context_org_update,
{'id': pkg.id,
'organization_id': pkg.owner_org})
Expand Down Expand Up @@ -1022,6 +1023,7 @@ def package_owner_org_update(context, data_dict):
:type id: string
'''
model = context['model']
user = context['user']
name_or_id = data_dict.get('id')
organization_id = data_dict.get('organization_id')

Expand All @@ -1041,10 +1043,17 @@ def package_owner_org_update(context, data_dict):
org = None
pkg.owner_org = None

if context.get('add_revision', True):
rev = model.repo.new_revision()
rev.author = user
if 'message' in context:
rev.message = context['message']
else:
rev.message = _(u'REST API: Update object %s') % pkg.get("name")

members = model.Session.query(model.Member) \
.filter(model.Member.table_id == pkg.id) \
.filter(model.Member.capacity == 'organization')
.filter(model.Member.table_id == pkg.id) \
.filter(model.Member.capacity == 'organization')

need_update = True
for member_obj in members:
Expand Down
60 changes: 60 additions & 0 deletions ckan/tests/logic/action/test_update.py
Expand Up @@ -858,3 +858,63 @@ def test_user_create_password_hash_not_for_normal_users(self):

user_obj = model.User.get(user['id'])
assert user_obj.password != 'pretend-this-is-a-valid-hash'


class TestPackageOwnerOrgUpdate(object):

@classmethod
def teardown_class(cls):
helpers.reset_db()

def setup(self):
helpers.reset_db()

def test_package_owner_org_added(self):
'''A package without an owner_org can have one added.'''
sysadmin = factories.Sysadmin()
org = factories.Organization()
dataset = factories.Dataset()
context = {
'user': sysadmin['name'],
}
assert dataset['owner_org'] is None
helpers.call_action('package_owner_org_update',
context=context,
id=dataset['id'],
organization_id=org['id'])
dataset_obj = model.Package.get(dataset['id'])
assert dataset_obj.owner_org == org['id']

def test_package_owner_org_changed(self):
'''A package with an owner_org can have it changed.'''

sysadmin = factories.Sysadmin()
org_1 = factories.Organization()
org_2 = factories.Organization()
dataset = factories.Dataset(owner_org=org_1['id'])
context = {
'user': sysadmin['name'],
}
assert dataset['owner_org'] == org_1['id']
helpers.call_action('package_owner_org_update',
context=context,
id=dataset['id'],
organization_id=org_2['id'])
dataset_obj = model.Package.get(dataset['id'])
assert dataset_obj.owner_org == org_2['id']

def test_package_owner_org_removed(self):
'''A package with an owner_org can have it removed.'''
sysadmin = factories.Sysadmin()
org = factories.Organization()
dataset = factories.Dataset(owner_org=org['id'])
context = {
'user': sysadmin['name'],
}
assert dataset['owner_org'] == org['id']
helpers.call_action('package_owner_org_update',
context=context,
id=dataset['id'],
organization_id=None)
dataset_obj = model.Package.get(dataset['id'])
assert dataset_obj.owner_org is None

0 comments on commit 7173fbe

Please sign in to comment.