Skip to content

Commit

Permalink
Add back pkg.extras_list, which was just removed in #4691
Browse files Browse the repository at this point in the history
  • Loading branch information
David Read committed May 10, 2019
1 parent bcf1271 commit 1fc1442
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
13 changes: 13 additions & 0 deletions ckan/model/package.py
Expand Up @@ -556,6 +556,19 @@ def set_rating(self, user_or_ip, rating):
rating=rating)
meta.Session.add(rating)

@property
@maintain.deprecated()
def extras_list(self):
'''DEPRECATED in 2.9
Returns a list of the dataset's extras, as PackageExtra object
NB includes deleted ones too (state='deleted')
'''
from package_extra import PackageExtra
return meta.Session.query(PackageExtra) \
.filter_by(package_id=self.id) \
.all()


class RatingValueException(Exception):
pass
Expand Down
36 changes: 36 additions & 0 deletions ckan/tests/model/test_package_extra.py
@@ -0,0 +1,36 @@
# encoding: utf-8

from nose.tools import assert_equal

from ckan import model
from ckan.tests import helpers, factories


class TestPackage(object):

def setup(self):
helpers.reset_db()

def test_extras_list(self):
extras = [
{u'key': u'subject', u'value': u'science'},
{u'key': u'accuracy', u'value': u'metre'},
{u'key': u'sample_years', u'value': u'2012-2013'},
]
dataset = factories.Dataset(extras=extras)
# delete the 'subject' extra
extras = extras[1:]
helpers.call_action(u'package_patch', id=dataset['id'], extras=extras)
# unrelated extra, to check it doesn't affect things
factories.Dataset(extras=[{u'key': u'foo', u'value': u'bar'}])

pkg = model.Package.by_name(dataset['name'])
assert isinstance(pkg.extras_list[0], model.PackageExtra)
assert_equal(
set([(pe.package_id, pe.key, pe.value, pe.state)
for pe in pkg.extras_list]),
set([(dataset['id'], u'subject', u'science', u'deleted'),
(dataset['id'], u'accuracy', u'metre', u'active'),
(dataset['id'], u'sample_years', u'2012-2013', u'active'),
])
)

0 comments on commit 1fc1442

Please sign in to comment.