| # 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() |