aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests/utils.py
blob: a8f2eb0b009ee572218c629f77cb69f2bdcde80a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from contextlib import contextmanager
from rest_framework.compat import six
from rest_framework.settings import api_settings


@contextmanager
def temporary_setting(setting, value, module=None):
    """
    Temporarily change value of setting for test.

    Optionally reload given module, useful when module uses value of setting on
    import.
    """
    original_value = getattr(api_settings, setting)
    setattr(api_settings, setting, value)

    if module is not None:
        six.moves.reload_module(module)

    yield

    setattr(api_settings, setting, original_value)

    if module is not None:
        six.moves.reload_module(module)