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 c6fbfcb99d7..df259500790 100644 --- a/ckan/logic/action/create.py +++ b/ckan/logic/action/create.py @@ -1,5 +1,7 @@ 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.plugins as lib_plugins @@ -889,6 +891,9 @@ def activity_create(context, activity_dict, ignore_auth=False): :rtype: dictionary ''' + if not 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) 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