diff --git a/pybossa/sched.py b/pybossa/sched.py index ab3a888ed6..59359f6c33 100644 --- a/pybossa/sched.py +++ b/pybossa/sched.py @@ -442,6 +442,11 @@ def get_reserve_task_category_info(reserve_task_config, project_id, timeout, use if not reserve_task_config: return sql_filters, category_keys + if current_app.config.get('PRIVATE_INSTANCE'): + current_app.logger.info("Reserve task by category disabled for private instance. project_id %s, reserve_task_config %s", + project_id, str(reserve_task_config)) + return sql_filters, category_keys + category = ":".join(["{}:*".format(field) for field in sorted(reserve_task_config)]) lock_manager = LockManager(sentinel.master, timeout) category_keys = lock_manager.get_task_category_lock(project_id, user_id, category, exclude_user) diff --git a/test/test_reserve_task_category.py b/test/test_reserve_task_category.py index 81e9061cea..8bb2e4a1da 100644 --- a/test/test_reserve_task_category.py +++ b/test/test_reserve_task_category.py @@ -143,6 +143,13 @@ def test_get_reserve_task_category_info(self, get_task_category_lock): assert sql_filters == expected_sql_filter and \ category_keys == expected_category_keys, "sql_filters, category_keys must be non empty" + # reserve task disabled for private instance, + with patch.dict(self.flask_app.config, {'PRIVATE_INSTANCE': True}): + sql_filters, category_keys = get_reserve_task_category_info(reserve_task_config, project.id, timeout, owner.id) + assert not sql_filters, "sql_filters must be empty for private instance" + assert not category_keys, "sql_filters must be empty for private instance" + + @with_context def test_acquire_and_release_reserve_task_lock(self): user = UserFactory.create()