diff --git a/ckan/lib/dictization/model_dictize.py b/ckan/lib/dictization/model_dictize.py index cda8b7f69c9..38626c3a020 100644 --- a/ckan/lib/dictization/model_dictize.py +++ b/ckan/lib/dictization/model_dictize.py @@ -206,7 +206,8 @@ def package_dictize(pkg, context): result_dict["extras"] = extras_list_dictize(result, context) #tracking tracking = model.TrackingSummary.get_for_package(pkg.id) - result_dict['tracking_summary'] = tracking + result_dict['tracking_summary_total'] = tracking['total'] + result_dict['tracking_summary_recent'] = tracking['recent'] #groups member_rev = model.member_revision_table group = model.group_table diff --git a/ckan/lib/plugins.py b/ckan/lib/plugins.py index 20910fb6aeb..412353c4683 100644 --- a/ckan/lib/plugins.py +++ b/ckan/lib/plugins.py @@ -262,6 +262,13 @@ def check_data_dict(self, data_dict, schema=None): 'extras_validation', 'save', 'return_to', 'resources', 'type'] + # Tracking summary might not exist if tracking not enabled. + surplus_keys_schema.extend(['tracking_summary_total', + 'tracking_summary_recent']) + + # isopen might not exist. + surplus_keys_schema.extend(['isopen']) + if not schema: schema = self.form_to_db_schema() schema_keys = schema.keys() diff --git a/ckan/logic/schema.py b/ckan/logic/schema.py index 97425021c5a..9f2957ca6fa 100644 --- a/ckan/logic/schema.py +++ b/ckan/logic/schema.py @@ -133,7 +133,10 @@ def default_package_schema(): 'name': [ignore_missing, unicode], 'title': [ignore_missing, unicode], '__extras': [ignore], - } + }, + 'tracking_summary_total': [ignore_missing], + 'tracking_summary_recent': [ignore_missing], + 'isopen': [ignore_missing], } return schema diff --git a/ckan/model/package.py b/ckan/model/package.py index b59476feac3..ae08d6c271b 100644 --- a/ckan/model/package.py +++ b/ckan/model/package.py @@ -218,7 +218,8 @@ def as_dict(self, ref_package_by='name', ref_group_by='name'): #tracking import ckan.model as model tracking = model.TrackingSummary.get_for_package(self.id) - _dict['tracking_summary'] = tracking + _dict['tracking_summary_total'] = tracking['total'] + _dict['tracking_summary_recent'] = tracking['recent'] return _dict def add_relationship(self, type_, related_package, comment=u''): diff --git a/ckan/tests/lib/test_dictization.py b/ckan/tests/lib/test_dictization.py index a7806087b13..c6811f95dd5 100644 --- a/ckan/tests/lib/test_dictization.py +++ b/ckan/tests/lib/test_dictization.py @@ -113,9 +113,12 @@ def setup_class(cls): {'name': u'tolstoy', 'display_name': u'tolstoy', 'state': u'active'}], 'title': u'A Novel By Tolstoy', - 'tracking_summary': {'total': 0, 'recent': 0}, + 'tracking_summary_total': 0, + 'tracking_summary_recent': 0, 'url': u'http://www.annakarenina.com', - 'version': u'0.7a'} + 'version': u'0.7a', + 'isopen': True, + } @classmethod diff --git a/ckan/tests/lib/test_dictization_schema.py b/ckan/tests/lib/test_dictization_schema.py index 3d80bcad015..6f6f7008c0a 100644 --- a/ckan/tests/lib/test_dictization_schema.py +++ b/ckan/tests/lib/test_dictization_schema.py @@ -99,7 +99,11 @@ def test_1_package_schema(self): {'name': u'tolstoy'}], 'title': u'A Novel By Tolstoy', 'url': u'http://www.annakarenina.com', - 'version': u'0.7a'}, pformat(converted_data) + 'version': u'0.7a', + 'isopen': True, + 'tracking_summary_total': 0, + 'tracking_summary_recent': 0, + }, pformat(converted_data)