From 0b771d3d467b1e7db6ff992f27f6724319a19920 Mon Sep 17 00:00:00 2001 From: John Glover Date: Tue, 12 Mar 2013 17:51:39 +0100 Subject: [PATCH 1/3] [#654] Allow activity streams to be disabled via config --- ckan/lib/activity_streams_session_extension.py | 8 ++++++++ ckan/logic/action/create.py | 5 +++++ ckan/tests/functional/api/test_activity.py | 6 +++++- ckan/tests/functional/test_activity.py | 8 +++++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ckan/lib/activity_streams_session_extension.py b/ckan/lib/activity_streams_session_extension.py index 08a6e37756c..e1945657462 100644 --- a/ckan/lib/activity_streams_session_extension.py +++ b/ckan/lib/activity_streams_session_extension.py @@ -1,7 +1,11 @@ +from pylons import config from sqlalchemy.orm.session import SessionExtension +from paste.deploy.converters import asbool import logging + logger = logging.getLogger(__name__) + def activity_stream_item(obj, activity_type, revision, user_id): method = getattr(obj, "activity_stream_item", None) if callable(method): @@ -11,6 +15,7 @@ def activity_stream_item(obj, activity_type, revision, user_id): "activity_stream_item() method, it must not be a package.") return None + def activity_stream_detail(obj, activity_id, activity_type): method = getattr(obj, "activity_stream_detail", None) @@ -21,6 +26,7 @@ def activity_stream_detail(obj, activity_id, activity_type): "activity_stream_detail() method.") return None + class DatasetActivitySessionExtension(SessionExtension): """Session extension that emits activity stream activities for packages and related objects. @@ -36,6 +42,8 @@ class DatasetActivitySessionExtension(SessionExtension): """ def before_commit(self, session): + if not asbool(config.get('ckan.activity_streams_enabled', 'true')): + return session.flush() diff --git a/ckan/logic/action/create.py b/ckan/logic/action/create.py index c1ece99aa19..5c7cf28f18b 100644 --- a/ckan/logic/action/create.py +++ b/ckan/logic/action/create.py @@ -1,7 +1,9 @@ import logging +from pylons import config from pylons.i18n import _ import ckan.new_authz as new_authz +import ckan.lib.helpers as h import ckan.lib.plugins as lib_plugins import ckan.logic as logic import ckan.rating as ratings @@ -901,6 +903,9 @@ def activity_create(context, activity_dict, ignore_auth=False): :rtype: dictionary ''' + if not h.asbool(config.get('ckan.activity_streams_enabled', 'true')): + return + model = context['model'] # Any revision_id that the caller attempts to pass in the activity_dict is diff --git a/ckan/tests/functional/api/test_activity.py b/ckan/tests/functional/api/test_activity.py index e317d58940c..479e344fa8e 100644 --- a/ckan/tests/functional/api/test_activity.py +++ b/ckan/tests/functional/api/test_activity.py @@ -13,7 +13,10 @@ logger = logging.getLogger(__name__) import pylons.test +from pylons import config +from paste.deploy.converters import asbool import paste.fixture +from nose import SkipTest from ckan.common import json @@ -170,9 +173,10 @@ def find_new_activities(before, after): class TestActivity: - @classmethod def setup_class(self): + if not asbool(config.get('ckan.activity_streams_enabled', 'true')): + raise SkipTest('Activity streams not enabled') import ckan import ckan.model as model ckan.tests.CreateTestData.create() diff --git a/ckan/tests/functional/test_activity.py b/ckan/tests/functional/test_activity.py index 02d56252871..fa4b80423c0 100644 --- a/ckan/tests/functional/test_activity.py +++ b/ckan/tests/functional/test_activity.py @@ -1,7 +1,11 @@ +from pylons import config from pylons.test import pylonsapp +from paste.deploy.converters import asbool import paste.fixture -import ckan from routes import url_for +from nose import SkipTest + +import ckan from ckan.logic.action.create import package_create, user_create, group_create from ckan.logic.action.create import follow_dataset, follow_user from ckan.logic.action.update import package_update, resource_update @@ -18,6 +22,8 @@ class TestActivity(HtmlCheckMethods): """ @classmethod def setup(cls): + if not asbool(config.get('ckan.activity_streams_enabled', 'true')): + raise SkipTest('Activity streams not enabled') ckan.tests.CreateTestData.create() cls.sysadmin_user = ckan.model.User.get('testsysadmin') cls.app = paste.fixture.TestApp(pylonsapp) From afef1b1c45d0fc33b4b216047dc821e4f82fd6fd Mon Sep 17 00:00:00 2001 From: John Glover Date: Wed, 20 Mar 2013 16:40:37 +0100 Subject: [PATCH 2/3] [#654] Import asbool from paste.deploy.converters instead of ckan.lib.helpers --- ckan/logic/action/create.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ckan/logic/action/create.py b/ckan/logic/action/create.py index 5c7cf28f18b..dd5609314af 100644 --- a/ckan/logic/action/create.py +++ b/ckan/logic/action/create.py @@ -1,9 +1,9 @@ import logging from pylons import config from pylons.i18n import _ +from paste.deploy.converters import asbool import ckan.new_authz as new_authz -import ckan.lib.helpers as h import ckan.lib.plugins as lib_plugins import ckan.logic as logic import ckan.rating as ratings @@ -903,7 +903,7 @@ def activity_create(context, activity_dict, ignore_auth=False): :rtype: dictionary ''' - if not h.asbool(config.get('ckan.activity_streams_enabled', 'true')): + if not asbool(config.get('ckan.activity_streams_enabled', 'true')): return model = context['model'] From f1a5f76eedaef2095f5dffe9255b175fb6c7ba8a Mon Sep 17 00:00:00 2001 From: amercader Date: Thu, 21 Mar 2013 16:34:57 +0000 Subject: [PATCH 3/3] [#654] Document activity streams config option --- doc/configuration.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/doc/configuration.rst b/doc/configuration.rst index 7dbc7a4c7f8..6e9bae57393 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -233,6 +233,23 @@ CKAN operates a delegated authentication model based on `OpenID