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 14, 2019
1 parent f95316f commit c1d6f6b
Show file tree
Hide file tree
Showing 2 changed files with 37 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
24 changes: 24 additions & 0 deletions ckan/tests/model/test_package_extra.py
Expand Up @@ -52,3 +52,27 @@ def test_delete_extras(self):
pkg.extras,
{u'accuracy': u'metre'}
)

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 c1d6f6b

Please sign in to comment.