Kaydet (Commit) e6f19ec3 authored tarafından wrwrwr's avatar wrwrwr Kaydeden (comit) Tim Graham

Fixed #23933 -- Made override_settings(DATABASE_ROUTERS) affect the master router.

üst d2202ec2
......@@ -4,7 +4,8 @@ import threading
import warnings
from django.conf import settings
from django.db import connections
from django.db import connections, router
from django.db.utils import ConnectionRouter
from django.dispatch import receiver, Signal
from django.utils import timezone
from django.utils.functional import empty
......@@ -77,6 +78,12 @@ def update_connections_time_zone(**kwargs):
conn.cursor().execute(tz_sql, [tz])
@receiver(setting_changed)
def clear_routers_cache(**kwargs):
if kwargs['setting'] == 'DATABASE_ROUTERS':
router.routers = ConnectionRouter().routers
@receiver(setting_changed)
def reset_default_template_engine(**kwargs):
if kwargs['setting'] in {
......
......@@ -500,6 +500,9 @@ Tests
for Oracle: :setting:`DATAFILE`, :setting:`DATAFILE_TMP`,
:setting:`DATAFILE_MAXSIZE` and :setting:`DATAFILE_TMP_MAXSIZE`.
* The :func:`~django.test.override_settings` decorator can now affect the
master router in :setting:`DATABASE_ROUTERS`.
Validators
^^^^^^^^^^
......
......@@ -6,7 +6,7 @@ import unittest
from django.conf.urls import url
from django.core.files.storage import default_storage
from django.core.urlresolvers import NoReverseMatch, reverse
from django.db import connection
from django.db import connection, router
from django.forms import EmailField, IntegerField
from django.http import HttpResponse
from django.template.loader import render_to_string
......@@ -842,3 +842,11 @@ class OverrideSettingsTests(TestCase):
self.assertIsNone(default_storage.directory_permissions_mode)
with self.settings(FILE_UPLOAD_DIRECTORY_PERMISSIONS=0o777):
self.assertEqual(default_storage.directory_permissions_mode, 0o777)
def test_override_database_routers(self):
"""
Overriding DATABASE_ROUTERS should update the master router.
"""
test_routers = (object(),)
with self.settings(DATABASE_ROUTERS=test_routers):
self.assertSequenceEqual(router.routers, test_routers)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment