summaryrefslogtreecommitdiff
path: root/django/conf/__init__.py
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2018-10-15 11:46:35 -0700
committerTim Graham <timograham@gmail.com>2018-10-15 16:31:39 -0400
commit99d4fc18bdb8110147165531d348be53529eece5 (patch)
tree6580afc29680907a87f1a9308dcaf66c821261d9 /django/conf/__init__.py
parent1299421cadc4fcf63585f2f88337078e43e660e0 (diff)
Refs #27829 -- Added warning for settings.DEFAULT_CONTENT_TYPE usage outside of Django.
Diffstat (limited to 'django/conf/__init__.py')
-rw-r--r--django/conf/__init__.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index 062975b1c6..a380806485 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -9,9 +9,11 @@ for a list of all possible variables.
import importlib
import os
import time
+import traceback
import warnings
from pathlib import Path
+import django
from django.conf import global_settings
from django.core.exceptions import ImproperlyConfigured
from django.utils.deprecation import RemovedInDjango30Warning
@@ -19,6 +21,8 @@ from django.utils.functional import LazyObject, empty
ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
+DEFAULT_CONTENT_TYPE_DEPRECATED_MSG = 'The DEFAULT_CONTENT_TYPE setting is deprecated.'
+
class LazySettings(LazyObject):
"""
@@ -93,6 +97,20 @@ class LazySettings(LazyObject):
"""Return True if the settings have already been configured."""
return self._wrapped is not empty
+ @property
+ def DEFAULT_CONTENT_TYPE(self):
+ stack = traceback.extract_stack()
+ # Show a warning if the setting is used outside of Django.
+ # Stack index: -1 this line, -2 the caller.
+ filename, _line_number, _function_name, _text = stack[-2]
+ if not filename.startswith(os.path.dirname(django.__file__)):
+ warnings.warn(
+ DEFAULT_CONTENT_TYPE_DEPRECATED_MSG,
+ RemovedInDjango30Warning,
+ stacklevel=2,
+ )
+ return self.__getattr__('DEFAULT_CONTENT_TYPE')
+
class Settings:
def __init__(self, settings_module):
@@ -126,7 +144,7 @@ class Settings:
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
if self.is_overridden('DEFAULT_CONTENT_TYPE'):
- warnings.warn('The DEFAULT_CONTENT_TYPE setting is deprecated.', RemovedInDjango30Warning)
+ warnings.warn(DEFAULT_CONTENT_TYPE_DEPRECATED_MSG, RemovedInDjango30Warning)
if hasattr(time, 'tzset') and self.TIME_ZONE:
# When we can, attempt to validate the timezone. If we can't find
@@ -172,7 +190,7 @@ class UserSettingsHolder:
def __setattr__(self, name, value):
self._deleted.discard(name)
if name == 'DEFAULT_CONTENT_TYPE':
- warnings.warn('The DEFAULT_CONTENT_TYPE setting is deprecated.', RemovedInDjango30Warning)
+ warnings.warn(DEFAULT_CONTENT_TYPE_DEPRECATED_MSG, RemovedInDjango30Warning)
super().__setattr__(name, value)
def __delattr__(self, name):