Home | History | Annotate | Download | only in afe
      1 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 """This files contains helper methods to interact with the readonly database."""
      6 
      7 # Please note this file doesn't contain and should not contain any logic to
      8 # establish connections outside of Django, as that might lead to effects where
      9 # connections get leaked, which will lead to Django not cleaning them up
     10 # properly. See http://crbug.com/422637 for more details on this failure.
     11 
     12 from django import db as django_db
     13 
     14 _DISABLED = False
     15 
     16 def set_globally_disabled(disable):
     17     """Disable and enable the use of readonly connections globally.
     18 
     19     If disabled, connection() will return the global connection instead of the
     20     readonly connection.
     21 
     22     @param disable: When True, readonly connections will be disabled.
     23     """
     24     _DISABLED = disable
     25 
     26 
     27 def connection():
     28     """Return a readonly database connection."""
     29     if _DISABLED:
     30         return django_db.connections['global']
     31     return django_db.connections['readonly']
     32 
     33 
     34 def cursor():
     35     """Return a cursor on the readonly database connection."""
     36     return connection().cursor()
     37