# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""This files contains helper methods to interact with the readonly database."""
# Please note this file doesn't contain and should not contain any logic to
# establish connections outside of Django, as that might lead to effects where
# connections get leaked, which will lead to Django not cleaning them up
# properly. See http://crbug.com/422637 for more details on this failure.
from django import db as django_db
_DISABLED = False
def set_globally_disabled(disable):
"""Disable and enable the use of readonly connections globally.
If disabled, connection() will return the global connection instead of the
readonly connection.
@param disable: When True, readonly connections will be disabled.
"""
_DISABLED = disable
def connection():
"""Return a readonly database connection."""
if _DISABLED:
return django_db.connections['global']
return django_db.connections['readonly']
def cursor():
"""Return a cursor on the readonly database connection."""
return connection().cursor()