Fixed #24149 -- Normalized tuple settings to lists.

This commit is contained in:
darkryder 2015-01-21 22:25:57 +05:30 committed by Tim Graham
parent 570912a97d
commit 9ec8aa5e5d
120 changed files with 612 additions and 616 deletions

View File

@ -15,7 +15,6 @@ from django.conf import global_settings
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.utils.deprecation import RemovedInDjango20Warning from django.utils.deprecation import RemovedInDjango20Warning
from django.utils.functional import LazyObject, empty from django.utils.functional import LazyObject, empty
from django.utils import six
ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE" ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
@ -103,8 +102,8 @@ class Settings(BaseSettings):
setting_value = getattr(mod, setting) setting_value = getattr(mod, setting)
if (setting in tuple_settings and if (setting in tuple_settings and
isinstance(setting_value, six.string_types)): not isinstance(setting_value, (list, tuple))):
raise ImproperlyConfigured("The %s setting must be a tuple. " raise ImproperlyConfigured("The %s setting must be a list or a tuple. "
"Please fix your settings." % setting) "Please fix your settings." % setting)
setattr(self, setting, setting_value) setattr(self, setting, setting_value)
self._explicit_settings.add(setting) self._explicit_settings.add(setting)

View File

@ -21,13 +21,13 @@ DEBUG_PROPAGATE_EXCEPTIONS = False
USE_ETAGS = False USE_ETAGS = False
# People who get code error notifications. # People who get code error notifications.
# In the format (('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com')) # In the format [('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com')]
ADMINS = () ADMINS = []
# Tuple of IP addresses, as strings, that: # List of IP addresses, as strings, that:
# * See debug comments, when DEBUG is true # * See debug comments, when DEBUG is true
# * Receive x-headers # * Receive x-headers
INTERNAL_IPS = () INTERNAL_IPS = []
# Hosts/domain names that are valid for this site. # Hosts/domain names that are valid for this site.
# "*" matches anything, ".example.com" matches example.com and all subdomains # "*" matches anything, ".example.com" matches example.com and all subdomains
@ -47,7 +47,7 @@ USE_TZ = False
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'en-us'
# Languages we provide translations for, out of the box. # Languages we provide translations for, out of the box.
LANGUAGES = ( LANGUAGES = [
('af', gettext_noop('Afrikaans')), ('af', gettext_noop('Afrikaans')),
('ar', gettext_noop('Arabic')), ('ar', gettext_noop('Arabic')),
('ast', gettext_noop('Asturian')), ('ast', gettext_noop('Asturian')),
@ -132,15 +132,15 @@ LANGUAGES = (
('vi', gettext_noop('Vietnamese')), ('vi', gettext_noop('Vietnamese')),
('zh-hans', gettext_noop('Simplified Chinese')), ('zh-hans', gettext_noop('Simplified Chinese')),
('zh-hant', gettext_noop('Traditional Chinese')), ('zh-hant', gettext_noop('Traditional Chinese')),
) ]
# Languages using BiDi (right-to-left) layout # Languages using BiDi (right-to-left) layout
LANGUAGES_BIDI = ("he", "ar", "fa", "ur") LANGUAGES_BIDI = ["he", "ar", "fa", "ur"]
# If you set this to False, Django will make some optimizations so as not # If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery. # to load the internationalization machinery.
USE_I18N = True USE_I18N = True
LOCALE_PATHS = () LOCALE_PATHS = []
# Settings for language cookie # Settings for language cookie
LANGUAGE_COOKIE_NAME = 'django_language' LANGUAGE_COOKIE_NAME = 'django_language'
@ -197,24 +197,24 @@ EMAIL_SSL_KEYFILE = None
EMAIL_TIMEOUT = None EMAIL_TIMEOUT = None
# List of strings representing installed apps. # List of strings representing installed apps.
INSTALLED_APPS = () INSTALLED_APPS = []
# List of locations of the template source files, in search order. # List of locations of the template source files, in search order.
TEMPLATE_DIRS = () TEMPLATE_DIRS = []
# List of callables that know how to import templates from various sources. # List of callables that know how to import templates from various sources.
# See the comments in django/core/template/loader.py for interface # See the comments in django/core/template/loader.py for interface
# documentation. # documentation.
TEMPLATE_LOADERS = ( TEMPLATE_LOADERS = [
'django.template.loaders.filesystem.Loader', 'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader', 'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader', # 'django.template.loaders.eggs.Loader',
) ]
# List of processors used by RequestContext to populate the context. # List of processors used by RequestContext to populate the context.
# Each one should be a callable that takes the request object as its # Each one should be a callable that takes the request object as its
# only parameter and returns a dictionary to add to the context. # only parameter and returns a dictionary to add to the context.
TEMPLATE_CONTEXT_PROCESSORS = ( TEMPLATE_CONTEXT_PROCESSORS = [
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug', 'django.template.context_processors.debug',
'django.template.context_processors.i18n', 'django.template.context_processors.i18n',
@ -223,7 +223,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
'django.template.context_processors.tz', 'django.template.context_processors.tz',
# 'django.template.context_processors.request', # 'django.template.context_processors.request',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
) ]
# Output to use in template system for invalid (e.g. misspelled) variables. # Output to use in template system for invalid (e.g. misspelled) variables.
TEMPLATE_STRING_IF_INVALID = '' TEMPLATE_STRING_IF_INVALID = ''
@ -251,31 +251,31 @@ FORCE_SCRIPT_NAME = None
# that are not allowed to visit any page, systemwide. Use this for bad # that are not allowed to visit any page, systemwide. Use this for bad
# robots/crawlers. Here are a few examples: # robots/crawlers. Here are a few examples:
# import re # import re
# DISALLOWED_USER_AGENTS = ( # DISALLOWED_USER_AGENTS = [
# re.compile(r'^NaverBot.*'), # re.compile(r'^NaverBot.*'),
# re.compile(r'^EmailSiphon.*'), # re.compile(r'^EmailSiphon.*'),
# re.compile(r'^SiteSucker.*'), # re.compile(r'^SiteSucker.*'),
# re.compile(r'^sohu-search') # re.compile(r'^sohu-search')
# ) # ]
DISALLOWED_USER_AGENTS = () DISALLOWED_USER_AGENTS = []
ABSOLUTE_URL_OVERRIDES = {} ABSOLUTE_URL_OVERRIDES = {}
# Tuple of strings representing allowed prefixes for the {% ssi %} tag. # List of strings representing allowed prefixes for the {% ssi %} tag.
# Example: ('/home/html', '/var/www') # Example: ['/home/html', '/var/www']
ALLOWED_INCLUDE_ROOTS = () ALLOWED_INCLUDE_ROOTS = []
# List of compiled regular expression objects representing URLs that need not # List of compiled regular expression objects representing URLs that need not
# be reported by BrokenLinkEmailsMiddleware. Here are a few examples: # be reported by BrokenLinkEmailsMiddleware. Here are a few examples:
# import re # import re
# IGNORABLE_404_URLS = ( # IGNORABLE_404_URLS = [
# re.compile(r'^/apple-touch-icon.*\.png$'), # re.compile(r'^/apple-touch-icon.*\.png$'),
# re.compile(r'^/favicon.ico$), # re.compile(r'^/favicon.ico$),
# re.compile(r'^/robots.txt$), # re.compile(r'^/robots.txt$),
# re.compile(r'^/phpmyadmin/), # re.compile(r'^/phpmyadmin/),
# re.compile(r'\.(cgi|php|pl)$'), # re.compile(r'\.(cgi|php|pl)$'),
# ) # ]
IGNORABLE_404_URLS = () IGNORABLE_404_URLS = []
# A secret key for this particular Django installation. Used in secret-key # A secret key for this particular Django installation. Used in secret-key
# hashing algorithms. Set this in your settings, or Django will complain # hashing algorithms. Set this in your settings, or Django will complain
@ -302,10 +302,10 @@ STATIC_ROOT = None
STATIC_URL = None STATIC_URL = None
# List of upload handler classes to be applied in order. # List of upload handler classes to be applied in order.
FILE_UPLOAD_HANDLERS = ( FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler',
) ]
# Maximum size, in bytes, of a request before it will be streamed to the # Maximum size, in bytes, of a request before it will be streamed to the
# file system instead of into memory. # file system instead of into memory.
@ -366,30 +366,30 @@ SHORT_DATETIME_FORMAT = 'm/d/Y P'
# See all available format string here: # See all available format string here:
# http://docs.python.org/library/datetime.html#strftime-behavior # http://docs.python.org/library/datetime.html#strftime-behavior
# * Note that these format strings are different from the ones to display dates # * Note that these format strings are different from the ones to display dates
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
'%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
'%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
'%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
'%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
) ]
# Default formats to be used when parsing times from input boxes, in order # Default formats to be used when parsing times from input boxes, in order
# See all available format string here: # See all available format string here:
# http://docs.python.org/library/datetime.html#strftime-behavior # http://docs.python.org/library/datetime.html#strftime-behavior
# * Note that these format strings are different from the ones to display dates # * Note that these format strings are different from the ones to display dates
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M:%S', # '14:30:59' '%H:%M:%S', # '14:30:59'
'%H:%M:%S.%f', # '14:30:59.000200' '%H:%M:%S.%f', # '14:30:59.000200'
'%H:%M', # '14:30' '%H:%M', # '14:30'
) ]
# Default formats to be used when parsing dates and times from input boxes, # Default formats to be used when parsing dates and times from input boxes,
# in order # in order
# See all available format string here: # See all available format string here:
# http://docs.python.org/library/datetime.html#strftime-behavior # http://docs.python.org/library/datetime.html#strftime-behavior
# * Note that these format strings are different from the ones to display dates # * Note that these format strings are different from the ones to display dates
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -402,7 +402,7 @@ DATETIME_INPUT_FORMATS = (
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M', # '10/25/06 14:30' '%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06' '%m/%d/%y', # '10/25/06'
) ]
# First day of week, to be used on calendars # First day of week, to be used on calendars
# 0 means Sunday, 1 means Monday... # 0 means Sunday, 1 means Monday...
@ -453,10 +453,10 @@ SECURE_PROXY_SSL_HEADER = None
# List of middleware classes to use. Order is important; in the request phase, # List of middleware classes to use. Order is important; in the request phase,
# this middleware classes will be applied in the order given, and in the # this middleware classes will be applied in the order given, and in the
# response phase the middleware will be applied in reverse order. # response phase the middleware will be applied in reverse order.
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
) ]
############ ############
# SESSIONS # # SESSIONS #
@ -508,7 +508,7 @@ CACHE_MIDDLEWARE_ALIAS = 'default'
AUTH_USER_MODEL = 'auth.User' AUTH_USER_MODEL = 'auth.User'
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
LOGIN_URL = '/accounts/login/' LOGIN_URL = '/accounts/login/'
@ -522,7 +522,7 @@ PASSWORD_RESET_TIMEOUT_DAYS = 3
# the first hasher in this list is the preferred algorithm. any # the first hasher in this list is the preferred algorithm. any
# password using different algorithms will be converted automatically # password using different algorithms will be converted automatically
# upon login # upon login
PASSWORD_HASHERS = ( PASSWORD_HASHERS = [
'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
@ -532,7 +532,7 @@ PASSWORD_HASHERS = (
'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher', 'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher',
'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher', 'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher', 'django.contrib.auth.hashers.CryptPasswordHasher',
) ]
########### ###########
# SIGNING # # SIGNING #
@ -596,25 +596,25 @@ TEST_NON_SERIALIZED_APPS = []
############ ############
# The list of directories to search for fixtures # The list of directories to search for fixtures
FIXTURE_DIRS = () FIXTURE_DIRS = []
############### ###############
# STATICFILES # # STATICFILES #
############### ###############
# A list of locations of additional static files # A list of locations of additional static files
STATICFILES_DIRS = () STATICFILES_DIRS = []
# The default file storage backend used during the build process # The default file storage backend used during the build process
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
# List of finder classes that know how to find static files in # List of finder classes that know how to find static files in
# various locations. # various locations.
STATICFILES_FINDERS = ( STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', # 'django.contrib.staticfiles.finders.DefaultStorageFinder',
) ]
############## ##############
# MIGRATIONS # # MIGRATIONS #

View File

@ -16,18 +16,18 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
# '31/12/2009', '31/12/09' # '31/12/2009', '31/12/09'
'%d/%m/%Y', '%d/%m/%y' '%d/%m/%Y', '%d/%m/%y'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M:%S',
'%d/%m/%Y %H:%M:%S.%f', '%d/%m/%Y %H:%M:%S.%f',
'%d/%m/%Y %H:%M', '%d/%m/%Y %H:%M',
'%d/%m/%y %H:%M:%S', '%d/%m/%y %H:%M:%S',
'%d/%m/%y %H:%M:%S.%f', '%d/%m/%y %H:%M:%S.%f',
'%d/%m/%y %H:%M', '%d/%m/%y %H:%M',
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,18 +16,18 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', '%d.%m.%y', # '05.01.2006', '05.01.06' '%d.%m.%Y', '%d.%m.%y', # '05.01.2006', '05.01.06'
'%d. %m. %Y', '%d. %m. %y', # '5. 1. 2006', '5. 1. 06' '%d. %m. %Y', '%d. %m. %y', # '5. 1. 2006', '5. 1. 06'
# '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006' # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
) ]
# Kept ISO formats as one is in first position # Kept ISO formats as one is in first position
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M:%S', # '04:30:59' '%H:%M:%S', # '04:30:59'
'%H.%M', # '04.30' '%H.%M', # '04.30'
'%H:%M', # '04:30' '%H:%M', # '04:30'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '05.01.2006 04:30:59' '%d.%m.%Y %H:%M:%S', # '05.01.2006 04:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '05.01.2006 04:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '05.01.2006 04:30:59.000200'
'%d.%m.%Y %H.%M', # '05.01.2006 04.30' '%d.%m.%Y %H.%M', # '05.01.2006 04.30'
@ -39,7 +39,7 @@ DATETIME_INPUT_FORMATS = (
'%d. %m. %Y %H:%M', # '05. 01. 2006 04:30' '%d. %m. %Y %H:%M', # '05. 01. 2006 04:30'
'%d. %m. %Y', # '05. 01. 2006' '%d. %m. %Y', # '05. 01. 2006'
'%Y-%m-%d %H.%M', # '2006-01-05 04.30' '%Y-%m-%d %H.%M', # '2006-01-05 04.30'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,10 +16,10 @@ FIRST_DAY_OF_WEEK = 1 # 'Dydd Llun'
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -32,7 +32,7 @@ DATETIME_INPUT_FORMATS = (
'%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200' '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
'%d/%m/%y %H:%M', # '25/10/06 14:30' '%d/%m/%y %H:%M', # '25/10/06 14:30'
'%d/%m/%y', # '25/10/06' '%d/%m/%y', # '25/10/06'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,14 +16,14 @@ FIRST_DAY_OF_WEEK = 1
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', # '25.10.2006' '%d.%m.%Y', # '25.10.2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,16 +16,16 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
# '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006' # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
'%d.%m.%Y', # '25.10.2006' '%d.%m.%Y', # '25.10.2006'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,16 +17,16 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
# '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006' # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
'%d.%m.%Y', # '25.10.2006' '%d.%m.%Y', # '25.10.2006'
) ]
# these are the separators for non-monetary numbers. For monetary numbers, # these are the separators for non-monetary numbers. For monetary numbers,
# the DECIMAL_SEPARATOR is a . (decimal point) and the THOUSAND_SEPARATOR is a # the DECIMAL_SEPARATOR is a . (decimal point) and the THOUSAND_SEPARATOR is a

View File

@ -16,10 +16,10 @@ FIRST_DAY_OF_WEEK = 0 # Sunday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', '%Y-%m-%d', # '25/10/2006', '25/10/06', '2006-10-25', '%d/%m/%Y', '%d/%m/%y', '%Y-%m-%d', # '25/10/2006', '25/10/06', '2006-10-25',
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
'%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200' '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
'%d/%m/%Y %H:%M', # '25/10/2006 14:30' '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
@ -32,7 +32,7 @@ DATETIME_INPUT_FORMATS = (
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
'%Y-%m-%d', # '2006-10-25' '%Y-%m-%d', # '2006-10-25'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,14 +17,14 @@ FIRST_DAY_OF_WEEK = 0 # Sunday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
# '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
# '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
# '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
# '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -37,7 +37,7 @@ DATETIME_INPUT_FORMATS = (
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M', # '10/25/06 14:30' '%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06' '%m/%d/%y', # '10/25/06'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,14 +16,14 @@ FIRST_DAY_OF_WEEK = 0 # Sunday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
# '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
# '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
# '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
# '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -36,7 +36,7 @@ DATETIME_INPUT_FORMATS = (
'%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200' '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
'%d/%m/%y %H:%M', # '25/10/06 14:30' '%d/%m/%y %H:%M', # '25/10/06 14:30'
'%d/%m/%y', # '25/10/06' '%d/%m/%y', # '25/10/06'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,14 +16,14 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
# '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
# '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
# '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
# '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -36,7 +36,7 @@ DATETIME_INPUT_FORMATS = (
'%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200' '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
'%d/%m/%y %H:%M', # '25/10/06 14:30' '%d/%m/%y %H:%M', # '25/10/06 14:30'
'%d/%m/%y', # '25/10/06' '%d/%m/%y', # '25/10/06'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,7 +16,7 @@ FIRST_DAY_OF_WEEK = 1 # Monday (lundo)
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', # '1887-07-26' '%Y-%m-%d', # '1887-07-26'
'%y-%m-%d', # '87-07-26' '%y-%m-%d', # '87-07-26'
'%Y %m %d', # '1887 07 26' '%Y %m %d', # '1887 07 26'
@ -25,12 +25,12 @@ DATE_INPUT_FORMATS = (
'%d-a de %B %Y', # '26-a de julio 1887' '%d-a de %B %Y', # '26-a de julio 1887'
'%d %B %Y', # '26 julio 1887' '%d %B %Y', # '26 julio 1887'
'%d %m %Y', # '26 07 1887' '%d %m %Y', # '26 07 1887'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M:%S', # '18:59:00' '%H:%M:%S', # '18:59:00'
'%H:%M', # '18:59' '%H:%M', # '18:59'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '1887-07-26 18:59:00' '%Y-%m-%d %H:%M:%S', # '1887-07-26 18:59:00'
'%Y-%m-%d %H:%M', # '1887-07-26 18:59' '%Y-%m-%d %H:%M', # '1887-07-26 18:59'
'%Y-%m-%d', # '1887-07-26' '%Y-%m-%d', # '1887-07-26'
@ -46,7 +46,7 @@ DATETIME_INPUT_FORMATS = (
'%y-%m-%d %H:%M:%S', # '87-07-26 18:59:00' '%y-%m-%d %H:%M:%S', # '87-07-26 18:59:00'
'%y-%m-%d %H:%M', # '87-07-26 18:59' '%y-%m-%d %H:%M', # '87-07-26 18:59'
'%y-%m-%d', # '87-07-26' '%y-%m-%d', # '87-07-26'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,18 +16,18 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
# '31/12/2009', '31/12/09' # '31/12/2009', '31/12/09'
'%d/%m/%Y', '%d/%m/%y' '%d/%m/%Y', '%d/%m/%y'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M:%S',
'%d/%m/%Y %H:%M:%S.%f', '%d/%m/%Y %H:%M:%S.%f',
'%d/%m/%Y %H:%M', '%d/%m/%Y %H:%M',
'%d/%m/%y %H:%M:%S', '%d/%m/%y %H:%M:%S',
'%d/%m/%y %H:%M:%S.%f', '%d/%m/%y %H:%M:%S.%f',
'%d/%m/%y %H:%M', '%d/%m/%y %H:%M',
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,18 +16,18 @@ FIRST_DAY_OF_WEEK = 0 # 0: Sunday, 1: Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', # '31/12/2009' '%d/%m/%Y', # '31/12/2009'
'%d/%m/%y', # '31/12/09' '%d/%m/%y', # '31/12/09'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M:%S',
'%d/%m/%Y %H:%M:%S.%f', '%d/%m/%Y %H:%M:%S.%f',
'%d/%m/%Y %H:%M', '%d/%m/%Y %H:%M',
'%d/%m/%y %H:%M:%S', '%d/%m/%y %H:%M:%S',
'%d/%m/%y %H:%M:%S.%f', '%d/%m/%y %H:%M:%S.%f',
'%d/%m/%y %H:%M', '%d/%m/%y %H:%M',
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -11,18 +11,18 @@ MONTH_DAY_FORMAT = r'j \d\e F'
SHORT_DATE_FORMAT = 'd/m/Y' SHORT_DATE_FORMAT = 'd/m/Y'
SHORT_DATETIME_FORMAT = 'd/m/Y H:i' SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
FIRST_DAY_OF_WEEK = 1 # Monday: ISO 8601 FIRST_DAY_OF_WEEK = 1 # Monday: ISO 8601
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
'%Y%m%d', # '20061025' '%Y%m%d', # '20061025'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M:%S',
'%d/%m/%Y %H:%M:%S.%f', '%d/%m/%Y %H:%M:%S.%f',
'%d/%m/%Y %H:%M', '%d/%m/%Y %H:%M',
'%d/%m/%y %H:%M:%S', '%d/%m/%y %H:%M:%S',
'%d/%m/%y %H:%M:%S.%f', '%d/%m/%y %H:%M:%S.%f',
'%d/%m/%y %H:%M', '%d/%m/%y %H:%M',
) ]
DECIMAL_SEPARATOR = '.' # ',' is also official (less common): NOM-008-SCFI-2002 DECIMAL_SEPARATOR = '.' # ',' is also official (less common): NOM-008-SCFI-2002
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -11,19 +11,19 @@ MONTH_DAY_FORMAT = r'j \d\e F'
SHORT_DATE_FORMAT = 'd/m/Y' SHORT_DATE_FORMAT = 'd/m/Y'
SHORT_DATETIME_FORMAT = 'd/m/Y H:i' SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
FIRST_DAY_OF_WEEK = 1 # Monday: ISO 8601 FIRST_DAY_OF_WEEK = 1 # Monday: ISO 8601
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
'%Y%m%d', # '20061025' '%Y%m%d', # '20061025'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M:%S',
'%d/%m/%Y %H:%M:%S.%f', '%d/%m/%Y %H:%M:%S.%f',
'%d/%m/%Y %H:%M', '%d/%m/%Y %H:%M',
'%d/%m/%y %H:%M:%S', '%d/%m/%y %H:%M:%S',
'%d/%m/%y %H:%M:%S.%f', '%d/%m/%y %H:%M:%S.%f',
'%d/%m/%y %H:%M', '%d/%m/%y %H:%M',
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -12,18 +12,18 @@ SHORT_DATE_FORMAT = 'd/m/Y'
SHORT_DATETIME_FORMAT = 'd/m/Y H:i' SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
FIRST_DAY_OF_WEEK = 0 # Sunday FIRST_DAY_OF_WEEK = 0 # Sunday
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
# '31/12/2009', '31/12/09' # '31/12/2009', '31/12/09'
'%d/%m/%Y', '%d/%m/%y' '%d/%m/%Y', '%d/%m/%y'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M:%S',
'%d/%m/%Y %H:%M:%S.%f', '%d/%m/%Y %H:%M:%S.%f',
'%d/%m/%Y %H:%M', '%d/%m/%Y %H:%M',
'%d/%m/%y %H:%M:%S', '%d/%m/%y %H:%M:%S',
'%d/%m/%y %H:%M:%S.%f', '%d/%m/%y %H:%M:%S.%f',
'%d/%m/%y %H:%M', '%d/%m/%y %H:%M',
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','

View File

@ -16,11 +16,11 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', # '20.3.2014' '%d.%m.%Y', # '20.3.2014'
'%d.%m.%y', # '20.3.14' '%d.%m.%y', # '20.3.14'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H.%M.%S', # '20.3.2014 14.30.59' '%d.%m.%Y %H.%M.%S', # '20.3.2014 14.30.59'
'%d.%m.%Y %H.%M.%S.%f', # '20.3.2014 14.30.59.000200' '%d.%m.%Y %H.%M.%S.%f', # '20.3.2014 14.30.59.000200'
'%d.%m.%Y %H.%M', # '20.3.2014 14.30' '%d.%m.%Y %H.%M', # '20.3.2014 14.30'
@ -30,12 +30,12 @@ DATETIME_INPUT_FORMATS = (
'%d.%m.%y %H.%M.%S.%f', # '20.3.14 14.30.59.000200' '%d.%m.%y %H.%M.%S.%f', # '20.3.14 14.30.59.000200'
'%d.%m.%y %H.%M', # '20.3.14 14.30' '%d.%m.%y %H.%M', # '20.3.14 14.30'
'%d.%m.%y', # '20.3.14' '%d.%m.%y', # '20.3.14'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H.%M.%S', # '14.30.59' '%H.%M.%S', # '14.30.59'
'%H.%M.%S.%f', # '14.30.59.000200' '%H.%M.%S.%f', # '14.30.59.000200'
'%H.%M', # '14.30' '%H.%M', # '14.30'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # Non-breaking space THOUSAND_SEPARATOR = '\xa0' # Non-breaking space

View File

@ -16,21 +16,21 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
'%d.%m.%Y', '%d.%m.%y', # Swiss (fr_CH), '25.10.2006', '25.10.06' '%d.%m.%Y', '%d.%m.%y', # Swiss [fr_CH), '25.10.2006', '25.10.06'
# '%d %B %Y', '%d %b %Y', # '25 octobre 2006', '25 oct. 2006' # '%d %B %Y', '%d %b %Y', # '25 octobre 2006', '25 oct. 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
'%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200' '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
'%d/%m/%Y %H:%M', # '25/10/2006 14:30' '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
'%d/%m/%Y', # '25/10/2006' '%d/%m/%Y', # '25/10/2006'
'%d.%m.%Y %H:%M:%S', # Swiss (fr_CH), '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # Swiss [fr_CH), '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # Swiss (fr_CH), '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # Swiss (fr_CH), '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # Swiss (fr_CH), '25.10.2006 14:30' '%d.%m.%Y %H:%M', # Swiss (fr_CH), '25.10.2006 14:30'
'%d.%m.%Y', # Swiss (fr_CH), '25.10.2006' '%d.%m.%Y', # Swiss (fr_CH), '25.10.2006'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,12 +17,12 @@ FIRST_DAY_OF_WEEK = 1
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', # '2006-10-25' '%Y-%m-%d', # '2006-10-25'
'%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.' '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.'
'%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.' '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -43,7 +43,7 @@ DATETIME_INPUT_FORMATS = (
'%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200' '%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200'
'%d. %m. %y. %H:%M', # '25. 10. 06. 14:30' '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30'
'%d. %m. %y.', # '25. 10. 06.' '%d. %m. %y.', # '25. 10. 06.'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'

View File

@ -16,19 +16,19 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y.%m.%d.', # '2006.10.25.' '%Y.%m.%d.', # '2006.10.25.'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H.%M.%S', # '14.30.59' '%H.%M.%S', # '14.30.59'
'%H.%M', # '14.30' '%H.%M', # '14.30'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y.%m.%d. %H.%M.%S', # '2006.10.25. 14.30.59' '%Y.%m.%d. %H.%M.%S', # '2006.10.25. 14.30.59'
'%Y.%m.%d. %H.%M.%S.%f', # '2006.10.25. 14.30.59.000200' '%Y.%m.%d. %H.%M.%S.%f', # '2006.10.25. 14.30.59.000200'
'%Y.%m.%d. %H.%M', # '2006.10.25. 14.30' '%Y.%m.%d. %H.%M', # '2006.10.25. 14.30'
'%Y.%m.%d.', # '2006.10.25.' '%Y.%m.%d.', # '2006.10.25.'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = ' ' # Non-breaking space THOUSAND_SEPARATOR = ' ' # Non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,19 +16,19 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d-%m-%y', '%d/%m/%y', # '25-10-09', 25/10/09' '%d-%m-%y', '%d/%m/%y', # '25-10-09', 25/10/09'
'%d-%m-%Y', '%d/%m/%Y', # '25-10-2009', 25/10/2009' '%d-%m-%Y', '%d/%m/%Y', # '25-10-2009', 25/10/2009'
'%d %b %Y', # '25 Oct 2006', '%d %b %Y', # '25 Oct 2006',
'%d %B %Y', # '25 October 2006' '%d %B %Y', # '25 October 2006'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H.%M.%S', # '14.30.59' '%H.%M.%S', # '14.30.59'
'%H.%M', # '14.30' '%H.%M', # '14.30'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d-%m-%Y %H.%M.%S', # '25-10-2009 14.30.59' '%d-%m-%Y %H.%M.%S', # '25-10-2009 14.30.59'
'%d-%m-%Y %H.%M.%S.%f', # '25-10-2009 14.30.59.000200' '%d-%m-%Y %H.%M.%S.%f', # '25-10-2009 14.30.59.000200'
'%d-%m-%Y %H.%M', # '25-10-2009 14.30' '%d-%m-%Y %H.%M', # '25-10-2009 14.30'
@ -45,7 +45,7 @@ DATETIME_INPUT_FORMATS = (
'%m/%d/%Y %H.%M.%S.%f', # '25/10/2009 14.30.59.000200' '%m/%d/%Y %H.%M.%S.%f', # '25/10/2009 14.30.59.000200'
'%m/%d/%Y %H.%M', # '25/10/2009 14.30' '%m/%d/%Y %H.%M', # '25/10/2009 14.30'
'%m/%d/%Y', # '10/25/2009' '%m/%d/%Y', # '10/25/2009'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'

View File

@ -16,12 +16,12 @@ FIRST_DAY_OF_WEEK = 1 # Lunedì
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%Y/%m/%d', # '25/10/2006', '2008/10/25' '%d/%m/%Y', '%Y/%m/%d', # '25/10/2006', '2008/10/25'
'%d-%m-%Y', '%Y-%m-%d', # '25-10-2006', '2008-10-25' '%d-%m-%Y', '%Y-%m-%d', # '25-10-2006', '2008-10-25'
'%d-%m-%y', '%d/%m/%y', # '25-10-06', '25/10/06' '%d-%m-%y', '%d/%m/%y', # '25-10-06', '25/10/06'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
'%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200' '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
'%d/%m/%Y %H:%M', # '25/10/2006 14:30' '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
@ -42,7 +42,7 @@ DATETIME_INPUT_FORMATS = (
'%d-%m-%y %H:%M:%S.%f', # '25-10-06 14:30:59.000200' '%d-%m-%y %H:%M:%S.%f', # '25-10-06 14:30:59.000200'
'%d-%m-%y %H:%M', # '25-10-06 14:30' '%d-%m-%y %H:%M', # '25-10-06 14:30'
'%d-%m-%y', # '25-10-06' '%d-%m-%y', # '25-10-06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,13 +17,13 @@ FIRST_DAY_OF_WEEK = 1 # (Monday)
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
# '%d %b %Y', '%d %b, %Y', '%d %b. %Y', # '25 Oct 2006', '25 Oct, 2006', '25 Oct. 2006' # '%d %b %Y', '%d %b, %Y', '%d %b. %Y', # '25 Oct 2006', '25 Oct, 2006', '25 Oct. 2006'
# '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
# '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' # '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -44,7 +44,7 @@ DATETIME_INPUT_FORMATS = (
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M', # '10/25/06 14:30' '%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06' '%m/%d/%y', # '10/25/06'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = " " THOUSAND_SEPARATOR = " "
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,22 +17,22 @@ SHORT_DATETIME_FORMAT = 'Y-n-j H:i'
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
# '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
# '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
# '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
# '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
'%Y년 %m월 %d', # '2006년 10월 25일', with localized suffix. '%Y년 %m월 %d', # '2006년 10월 25일', with localized suffix.
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M:%S', # '14:30:59' '%H:%M:%S', # '14:30:59'
'%H:%M:%S.%f', # '14:30:59.000200' '%H:%M:%S.%f', # '14:30:59.000200'
'%H:%M', # '14:30' '%H:%M', # '14:30'
'%H시 %M분 %S초', # '14시 30분 59초' '%H시 %M분 %S초', # '14시 30분 59초'
'%H시 %M분', # '14시 30분' '%H시 %M분', # '14시 30분'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -48,7 +48,7 @@ DATETIME_INPUT_FORMATS = (
'%Y년 %m월 %d%H시 %M분 %S초', # '2006년 10월 25일 14시 30분 59초' '%Y년 %m월 %d%H시 %M분 %S초', # '2006년 10월 25일 14시 30분 59초'
'%Y년 %m월 %d%H시 %M분', # '2006년 10월 25일 14시 30분' '%Y년 %m월 %d%H시 %M분', # '2006년 10월 25일 14시 30분'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','

View File

@ -16,18 +16,18 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06' '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M:%S', # '14:30:59' '%H:%M:%S', # '14:30:59'
'%H:%M:%S.%f', # '14:30:59.000200' '%H:%M:%S.%f', # '14:30:59.000200'
'%H:%M', # '14:30' '%H:%M', # '14:30'
'%H.%M.%S', # '14.30.59' '%H.%M.%S', # '14.30.59'
'%H.%M.%S.%f', # '14.30.59.000200' '%H.%M.%S.%f', # '14.30.59.000200'
'%H.%M', # '14.30' '%H.%M', # '14.30'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -42,7 +42,7 @@ DATETIME_INPUT_FORMATS = (
'%d.%m.%y %H.%M.%S.%f', # '25.10.06 14.30.59.000200' '%d.%m.%y %H.%M.%S.%f', # '25.10.06 14.30.59.000200'
'%d.%m.%y %H.%M', # '25.10.06 14.30' '%d.%m.%y %H.%M', # '25.10.06 14.30'
'%d.%m.%y', # '25.10.06' '%d.%m.%y', # '25.10.06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,18 +17,18 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06' '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M:%S', # '14:30:59' '%H:%M:%S', # '14:30:59'
'%H:%M:%S.%f', # '14:30:59.000200' '%H:%M:%S.%f', # '14:30:59.000200'
'%H:%M', # '14:30' '%H:%M', # '14:30'
'%H.%M.%S', # '14.30.59' '%H.%M.%S', # '14.30.59'
'%H.%M.%S.%f', # '14.30.59.000200' '%H.%M.%S.%f', # '14.30.59.000200'
'%H.%M', # '14.30' '%H.%M', # '14.30'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -43,7 +43,7 @@ DATETIME_INPUT_FORMATS = (
'%d.%m.%y %H.%M.%S.%f', # '25.10.06 14.30.59.000200' '%d.%m.%y %H.%M.%S.%f', # '25.10.06 14.30.59.000200'
'%d.%m.%y %H.%M', # '25.10.06 14.30' '%d.%m.%y %H.%M', # '25.10.06 14.30'
'%d.%m.%y', # '25.10.06' '%d.%m.%y', # '25.10.06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = ' ' # Non-breaking space THOUSAND_SEPARATOR = ' ' # Non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,12 +16,12 @@ FIRST_DAY_OF_WEEK = 1
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
'%d. %m. %Y', '%d. %m. %y', # '25. 10. 2006', '25. 10. 06' '%d. %m. %Y', '%d. %m. %y', # '25. 10. 2006', '25. 10. 06'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
@ -38,7 +38,7 @@ DATETIME_INPUT_FORMATS = (
'%d. %m. %y %H:%M:%S.%f', # '25. 10. 06 14:30:59.000200' '%d. %m. %y %H:%M:%S.%f', # '25. 10. 06 14:30:59.000200'
'%d. %m. %y %H:%M', # '25. 10. 06 14:30' '%d. %m. %y %H:%M', # '25. 10. 06 14:30'
'%d. %m. %y', # '25. 10. 06' '%d. %m. %y', # '25. 10. 06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'

View File

@ -17,14 +17,14 @@ FIRST_DAY_OF_WEEK = 0 # Sunday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
# '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
# '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
# '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
# '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -37,7 +37,7 @@ DATETIME_INPUT_FORMATS = (
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M', # '10/25/06 14:30' '%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06' '%m/%d/%y', # '10/25/06'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = ',' THOUSAND_SEPARATOR = ','
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,13 +17,13 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06' '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
# '%d. %b %Y', '%d %b %Y', # '25. okt 2006', '25 okt 2006' # '%d. %b %Y', '%d %b %Y', # '25. okt 2006', '25 okt 2006'
# '%d. %b. %Y', '%d %b. %Y', # '25. okt. 2006', '25 okt. 2006' # '%d. %b. %Y', '%d %b. %Y', # '25. okt. 2006', '25 okt. 2006'
# '%d. %B %Y', '%d %B %Y', # '25. oktober 2006', '25 oktober 2006' # '%d. %B %Y', '%d %B %Y', # '25. oktober 2006', '25 oktober 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -36,7 +36,7 @@ DATETIME_INPUT_FORMATS = (
'%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200' '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
'%d.%m.%y %H:%M', # '25.10.06 14:30' '%d.%m.%y %H:%M', # '25.10.06 14:30'
'%d.%m.%y', # '25.10.06' '%d.%m.%y', # '25.10.06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,22 +16,22 @@ FIRST_DAY_OF_WEEK = 1 # Monday (in Dutch 'maandag')
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d-%m-%Y', '%d-%m-%y', # '20-01-2009', '20-01-09' '%d-%m-%Y', '%d-%m-%y', # '20-01-2009', '20-01-09'
'%d/%m/%Y', '%d/%m/%y', # '20/01/2009', '20/01/09' '%d/%m/%Y', '%d/%m/%y', # '20/01/2009', '20/01/09'
# '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09' # '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09'
# '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 09' # '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 09'
) ]
# Kept ISO formats as one is in first position # Kept ISO formats as one is in first position
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M:%S', # '15:23:35' '%H:%M:%S', # '15:23:35'
'%H:%M:%S.%f', # '15:23:35.000200' '%H:%M:%S.%f', # '15:23:35.000200'
'%H.%M:%S', # '15.23:35' '%H.%M:%S', # '15.23:35'
'%H.%M:%S.%f', # '15.23:35.000200' '%H.%M:%S.%f', # '15.23:35.000200'
'%H.%M', # '15.23' '%H.%M', # '15.23'
'%H:%M', # '15:23' '%H:%M', # '15:23'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
# With time in %H:%M:%S : # With time in %H:%M:%S :
'%d-%m-%Y %H:%M:%S', '%d-%m-%y %H:%M:%S', '%Y-%m-%d %H:%M:%S', '%d-%m-%Y %H:%M:%S', '%d-%m-%y %H:%M:%S', '%Y-%m-%d %H:%M:%S',
# '20-01-2009 15:23:35', '20-01-09 15:23:35', '2009-01-20 15:23:35' # '20-01-2009 15:23:35', '20-01-09 15:23:35', '2009-01-20 15:23:35'
@ -67,7 +67,7 @@ DATETIME_INPUT_FORMATS = (
'%d/%m/%Y', '%d/%m/%y', '%Y/%m/%d', # '20/01/2009', '20/01/09', '2009/01/20' '%d/%m/%Y', '%d/%m/%y', '%Y/%m/%d', # '20/01/2009', '20/01/09', '2009/01/20'
# '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09' # '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09'
# '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 2009' # '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 2009'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,13 +17,13 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06' '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
# '%d. %b %Y', '%d %b %Y', # '25. okt 2006', '25 okt 2006' # '%d. %b %Y', '%d %b %Y', # '25. okt 2006', '25 okt 2006'
# '%d. %b. %Y', '%d %b. %Y', # '25. okt. 2006', '25 okt. 2006' # '%d. %b. %Y', '%d %b. %Y', # '25. okt. 2006', '25 okt. 2006'
# '%d. %B %Y', '%d %B %Y', # '25. oktober 2006', '25 oktober 2006' # '%d. %B %Y', '%d %B %Y', # '25. oktober 2006', '25 oktober 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -37,7 +37,7 @@ DATETIME_INPUT_FORMATS = (
'%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200' '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
'%d.%m.%y %H:%M', # '25.10.06 14:30' '%d.%m.%y %H:%M', # '25.10.06 14:30'
'%d.%m.%y', # '25.10.06' '%d.%m.%y', # '25.10.06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,17 +16,17 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
'%y-%m-%d', # '06-10-25' '%y-%m-%d', # '06-10-25'
# '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006' # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
'%d.%m.%Y', # '25.10.2006' '%d.%m.%Y', # '25.10.2006'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = ' ' THOUSAND_SEPARATOR = ' '
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,12 +17,12 @@ FIRST_DAY_OF_WEEK = 0 # Sunday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06' '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06'
# '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006' # '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006'
# '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006' # '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -35,7 +35,7 @@ DATETIME_INPUT_FORMATS = (
'%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200' '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
'%d/%m/%y %H:%M', # '25/10/06 14:30' '%d/%m/%y %H:%M', # '25/10/06 14:30'
'%d/%m/%y', # '25/10/06' '%d/%m/%y', # '25/10/06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,12 +16,12 @@ FIRST_DAY_OF_WEEK = 0 # Sunday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
# '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006' # '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006'
# '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006' # '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
'%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200' '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
'%d/%m/%Y %H:%M', # '25/10/2006 14:30' '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
@ -30,7 +30,7 @@ DATETIME_INPUT_FORMATS = (
'%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200' '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
'%d/%m/%y %H:%M', # '25/10/06 14:30' '%d/%m/%y %H:%M', # '25/10/06 14:30'
'%d/%m/%y', # '25/10/06' '%d/%m/%y', # '25/10/06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,11 +16,11 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', # '25.10.2006' '%d.%m.%Y', # '25.10.2006'
'%d.%m.%y', # '25.10.06' '%d.%m.%y', # '25.10.06'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
@ -29,7 +29,7 @@ DATETIME_INPUT_FORMATS = (
'%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200' '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
'%d.%m.%y %H:%M', # '25.10.06 14:30' '%d.%m.%y %H:%M', # '25.10.06 14:30'
'%d.%m.%y', # '25.10.06' '%d.%m.%y', # '25.10.06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,17 +16,17 @@ FIRST_DAY_OF_WEEK = 1 # Monday
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
'%y-%m-%d', # '06-10-25' '%y-%m-%d', # '06-10-25'
# '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006' # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
'%d.%m.%Y', # '25.10.2006' '%d.%m.%Y', # '25.10.2006'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,13 +16,13 @@ FIRST_DAY_OF_WEEK = 0
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06' '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
'%d-%m-%Y', # '25-10-2006' '%d-%m-%Y', # '25-10-2006'
'%d. %m. %Y', '%d. %m. %y', # '25. 10. 2006', '25. 10. 06' '%d. %m. %Y', '%d. %m. %y', # '25. 10. 2006', '25. 10. 06'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59' '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200' '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2006 14:30' '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
@ -43,7 +43,7 @@ DATETIME_INPUT_FORMATS = (
'%d. %m. %y %H:%M:%S.%f', # '25. 10. 06 14:30:59.000200' '%d. %m. %y %H:%M:%S.%f', # '25. 10. 06 14:30:59.000200'
'%d. %m. %y %H:%M', # '25. 10. 06 14:30' '%d. %m. %y %H:%M', # '25. 10. 06 14:30'
'%d. %m. %y', # '25. 10. 06' '%d. %m. %y', # '25. 10. 06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'

View File

@ -16,14 +16,14 @@ FIRST_DAY_OF_WEEK = 1
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.' '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.'
'%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.' '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.'
# '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.' # '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.'
# '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.' # '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.'
# '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.' # '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59' '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59'
'%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200' '%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200'
'%d.%m.%Y. %H:%M', # '25.10.2006. 14:30' '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30'
@ -40,7 +40,7 @@ DATETIME_INPUT_FORMATS = (
'%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200' '%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200'
'%d. %m. %y. %H:%M', # '25. 10. 06. 14:30' '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30'
'%d. %m. %y.', # '25. 10. 06.' '%d. %m. %y.', # '25. 10. 06.'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,14 +16,14 @@ FIRST_DAY_OF_WEEK = 1
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.' '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.'
'%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.' '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.'
# '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.' # '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.'
# '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.' # '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.'
# '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.' # '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59' '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59'
'%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200' '%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200'
'%d.%m.%Y. %H:%M', # '25.10.2006. 14:30' '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30'
@ -40,7 +40,7 @@ DATETIME_INPUT_FORMATS = (
'%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200' '%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200'
'%d. %m. %y. %H:%M', # '25. 10. 06. 14:30' '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30'
'%d. %m. %y.', # '25. 10. 06.' '%d. %m. %y.', # '25. 10. 06.'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -17,12 +17,12 @@ FIRST_DAY_OF_WEEK = 1
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
# Kept ISO formats as they are in first position # Kept ISO formats as they are in first position
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y-%m-%d', # '2006-10-25' '%Y-%m-%d', # '2006-10-25'
'%m/%d/%Y', # '10/25/2006' '%m/%d/%Y', # '10/25/2006'
'%m/%d/%y', # '10/25/06' '%m/%d/%y', # '10/25/06'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -35,7 +35,7 @@ DATETIME_INPUT_FORMATS = (
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M', # '10/25/06 14:30' '%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06' '%m/%d/%y', # '10/25/06'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '\xa0' # non-breaking space THOUSAND_SEPARATOR = '\xa0' # non-breaking space
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,17 +16,17 @@ FIRST_DAY_OF_WEEK = 1 # Pazartesi
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06' '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
'%y-%m-%d', # '06-10-25' '%y-%m-%d', # '06-10-25'
# '%d %B %Y', '%d %b. %Y', # '25 Ekim 2006', '25 Eki. 2006' # '%d %B %Y', '%d %b. %Y', # '25 Ekim 2006', '25 Eki. 2006'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
'%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200' '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
'%d/%m/%Y %H:%M', # '25/10/2006 14:30' '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
'%d/%m/%Y', # '25/10/2006' '%d/%m/%Y', # '25/10/2006'
) ]
DECIMAL_SEPARATOR = ',' DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.' THOUSAND_SEPARATOR = '.'
NUMBER_GROUPING = 3 NUMBER_GROUPING = 3

View File

@ -16,19 +16,19 @@ FIRST_DAY_OF_WEEK = 1 # 星期一 (Monday)
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y/%m/%d', # '2016/09/05' '%Y/%m/%d', # '2016/09/05'
'%Y-%m-%d', # '2016-09-05' '%Y-%m-%d', # '2016-09-05'
'%Y年%n月%j日', # '2016年9月5日' '%Y年%n月%j日', # '2016年9月5日'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M', # '20:45' '%H:%M', # '20:45'
'%H:%M:%S', # '20:45:29' '%H:%M:%S', # '20:45:29'
'%H:%M:%S.%f', # '20:45:29.000200' '%H:%M:%S.%f', # '20:45:29.000200'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y/%m/%d %H:%M', # '2016/09/05 20:45' '%Y/%m/%d %H:%M', # '2016/09/05 20:45'
'%Y-%m-%d %H:%M', # '2016-09-05 20:45' '%Y-%m-%d %H:%M', # '2016-09-05 20:45'
'%Y年%n月%j日 %H:%M', # '2016年9月5日 14:45' '%Y年%n月%j日 %H:%M', # '2016年9月5日 14:45'
@ -38,7 +38,7 @@ DATETIME_INPUT_FORMATS = (
'%Y/%m/%d %H:%M:%S.%f', # '2016/09/05 20:45:29.000200' '%Y/%m/%d %H:%M:%S.%f', # '2016/09/05 20:45:29.000200'
'%Y-%m-%d %H:%M:%S.%f', # '2016-09-05 20:45:29.000200' '%Y-%m-%d %H:%M:%S.%f', # '2016-09-05 20:45:29.000200'
'%Y年%n月%j日 %H:%n:%S.%f', # '2016年9月5日 20:45:29.000200' '%Y年%n月%j日 %H:%n:%S.%f', # '2016年9月5日 20:45:29.000200'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = '' THOUSAND_SEPARATOR = ''

View File

@ -16,19 +16,19 @@ FIRST_DAY_OF_WEEK = 1 # 星期一 (Monday)
# The *_INPUT_FORMATS strings use the Python strftime format syntax, # The *_INPUT_FORMATS strings use the Python strftime format syntax,
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DATE_INPUT_FORMATS = ( DATE_INPUT_FORMATS = [
'%Y/%m/%d', # '2016/09/05' '%Y/%m/%d', # '2016/09/05'
'%Y-%m-%d', # '2016-09-05' '%Y-%m-%d', # '2016-09-05'
'%Y年%n月%j日', # '2016年9月5日' '%Y年%n月%j日', # '2016年9月5日'
) ]
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = [
'%H:%M', # '20:45' '%H:%M', # '20:45'
'%H:%M:%S', # '20:45:29' '%H:%M:%S', # '20:45:29'
'%H:%M:%S.%f', # '20:45:29.000200' '%H:%M:%S.%f', # '20:45:29.000200'
) ]
DATETIME_INPUT_FORMATS = ( DATETIME_INPUT_FORMATS = [
'%Y/%m/%d %H:%M', # '2016/09/05 20:45' '%Y/%m/%d %H:%M', # '2016/09/05 20:45'
'%Y-%m-%d %H:%M', # '2016-09-05 20:45' '%Y-%m-%d %H:%M', # '2016-09-05 20:45'
'%Y年%n月%j日 %H:%M', # '2016年9月5日 14:45' '%Y年%n月%j日 %H:%M', # '2016年9月5日 14:45'
@ -38,7 +38,7 @@ DATETIME_INPUT_FORMATS = (
'%Y/%m/%d %H:%M:%S.%f', # '2016/09/05 20:45:29.000200' '%Y/%m/%d %H:%M:%S.%f', # '2016/09/05 20:45:29.000200'
'%Y-%m-%d %H:%M:%S.%f', # '2016-09-05 20:45:29.000200' '%Y-%m-%d %H:%M:%S.%f', # '2016-09-05 20:45:29.000200'
'%Y年%n月%j日 %H:%n:%S.%f', # '2016年9月5日 20:45:29.000200' '%Y年%n月%j日 %H:%n:%S.%f', # '2016年9月5日 20:45:29.000200'
) ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'
THOUSAND_SEPARATOR = '' THOUSAND_SEPARATOR = ''

View File

@ -31,16 +31,16 @@ ALLOWED_HOSTS = []
# Application definition # Application definition
INSTALLED_APPS = ( INSTALLED_APPS = [
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
) ]
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
@ -49,7 +49,7 @@ MIDDLEWARE_CLASSES = (
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
) ]
ROOT_URLCONF = '{{ project_name }}.urls' ROOT_URLCONF = '{{ project_name }}.urls'

View File

@ -37,7 +37,7 @@ def check_user_model(**kwargs):
# Check that the username field is unique # Check that the username field is unique
if not cls._meta.get_field(cls.USERNAME_FIELD).unique: if not cls._meta.get_field(cls.USERNAME_FIELD).unique:
if (settings.AUTHENTICATION_BACKENDS == if (settings.AUTHENTICATION_BACKENDS ==
('django.contrib.auth.backends.ModelBackend',)): ['django.contrib.auth.backends.ModelBackend']):
errors.append( errors.append(
checks.Error( checks.Error(
"'%s.%s' must be unique because it is named as the 'USERNAME_FIELD'." % ( "'%s.%s' must be unique because it is named as the 'USERNAME_FIELD'." % (

View File

@ -3,19 +3,19 @@ import os
from django.utils._os import upath from django.utils._os import upath
AUTH_MIDDLEWARE_CLASSES = ( AUTH_MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
) ]
AUTH_TEMPLATES = [{ AUTH_TEMPLATES = [{
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(os.path.dirname(upath(__file__)), 'templates')], 'DIRS': [os.path.join(os.path.dirname(upath(__file__)), 'templates')],
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': ( 'context_processors': [
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
), ],
}, },
}] }]

View File

@ -10,7 +10,7 @@ from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ImproperlyConfigured, PermissionDenied from django.core.exceptions import ImproperlyConfigured, PermissionDenied
from django.contrib.auth import authenticate, BACKEND_SESSION_KEY, get_user from django.contrib.auth import authenticate, BACKEND_SESSION_KEY, get_user
from django.http import HttpRequest from django.http import HttpRequest
from django.test import TestCase, override_settings from django.test import TestCase, modify_settings, override_settings
from django.contrib.auth.hashers import MD5PasswordHasher from django.contrib.auth.hashers import MD5PasswordHasher
@ -34,8 +34,8 @@ class BaseModelBackendTest(object):
backend = 'django.contrib.auth.backends.ModelBackend' backend = 'django.contrib.auth.backends.ModelBackend'
def setUp(self): def setUp(self):
self.curr_auth = settings.AUTHENTICATION_BACKENDS self.curr_auth = list(settings.AUTHENTICATION_BACKENDS)
settings.AUTHENTICATION_BACKENDS = (self.backend,) settings.AUTHENTICATION_BACKENDS = [self.backend]
self.create_users() self.create_users()
def tearDown(self): def tearDown(self):
@ -172,7 +172,7 @@ class BaseModelBackendTest(object):
user = self.UserModel._default_manager.get(pk=self.superuser.pk) user = self.UserModel._default_manager.get(pk=self.superuser.pk)
self.assertEqual(len(user.get_all_permissions()), len(Permission.objects.all())) self.assertEqual(len(user.get_all_permissions()), len(Permission.objects.all()))
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.tests.test_auth_backends.CountingMD5PasswordHasher',)) @override_settings(PASSWORD_HASHERS=['django.contrib.auth.tests.test_auth_backends.CountingMD5PasswordHasher'])
def test_authentication_timing(self): def test_authentication_timing(self):
"""Hasher is run once regardless of whether the user exists. Refs #20760.""" """Hasher is run once regardless of whether the user exists. Refs #20760."""
# Re-set the password, because this tests overrides PASSWORD_HASHERS # Re-set the password, because this tests overrides PASSWORD_HASHERS
@ -337,21 +337,20 @@ class SimpleRowlevelBackend(object):
@skipIfCustomUser @skipIfCustomUser
@modify_settings(AUTHENTICATION_BACKENDS={
'append': 'django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend',
})
class RowlevelBackendTest(TestCase): class RowlevelBackendTest(TestCase):
""" """
Tests for auth backend that supports object level permissions Tests for auth backend that supports object level permissions
""" """
backend = 'django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'
def setUp(self): def setUp(self):
self.curr_auth = settings.AUTHENTICATION_BACKENDS
settings.AUTHENTICATION_BACKENDS = tuple(self.curr_auth) + (self.backend,)
self.user1 = User.objects.create_user('test', 'test@example.com', 'test') self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
self.user2 = User.objects.create_user('test2', 'test2@example.com', 'test') self.user2 = User.objects.create_user('test2', 'test2@example.com', 'test')
self.user3 = User.objects.create_user('test3', 'test3@example.com', 'test') self.user3 = User.objects.create_user('test3', 'test3@example.com', 'test')
def tearDown(self): def tearDown(self):
settings.AUTHENTICATION_BACKENDS = self.curr_auth
# The get_group_permissions test messes with ContentTypes, which will # The get_group_permissions test messes with ContentTypes, which will
# be cached; flush the cache to ensure there are no side effects # be cached; flush the cache to ensure there are no side effects
# Refs #14975, #14925 # Refs #14975, #14925
@ -377,21 +376,17 @@ class RowlevelBackendTest(TestCase):
self.assertEqual(self.user3.get_group_permissions(TestObj()), {'group_perm'}) self.assertEqual(self.user3.get_group_permissions(TestObj()), {'group_perm'})
@override_settings(
AUTHENTICATION_BACKENDS=['django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'],
)
class AnonymousUserBackendTest(TestCase): class AnonymousUserBackendTest(TestCase):
""" """
Tests for AnonymousUser delegating to backend. Tests for AnonymousUser delegating to backend.
""" """
backend = 'django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'
def setUp(self): def setUp(self):
self.curr_auth = settings.AUTHENTICATION_BACKENDS
settings.AUTHENTICATION_BACKENDS = (self.backend,)
self.user1 = AnonymousUser() self.user1 = AnonymousUser()
def tearDown(self):
settings.AUTHENTICATION_BACKENDS = self.curr_auth
def test_has_perm(self): def test_has_perm(self):
self.assertEqual(self.user1.has_perm('perm', TestObj()), False) self.assertEqual(self.user1.has_perm('perm', TestObj()), False)
self.assertEqual(self.user1.has_perm('anon', TestObj()), True) self.assertEqual(self.user1.has_perm('anon', TestObj()), True)
@ -422,22 +417,17 @@ class NoBackendsTest(TestCase):
@skipIfCustomUser @skipIfCustomUser
@override_settings(AUTHENTICATION_BACKENDS=['django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'])
class InActiveUserBackendTest(TestCase): class InActiveUserBackendTest(TestCase):
""" """
Tests for an inactive user Tests for an inactive user
""" """
backend = 'django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'
def setUp(self): def setUp(self):
self.curr_auth = settings.AUTHENTICATION_BACKENDS
settings.AUTHENTICATION_BACKENDS = (self.backend,)
self.user1 = User.objects.create_user('test', 'test@example.com', 'test') self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
self.user1.is_active = False self.user1.is_active = False
self.user1.save() self.user1.save()
def tearDown(self):
settings.AUTHENTICATION_BACKENDS = self.curr_auth
def test_has_perm(self): def test_has_perm(self):
self.assertEqual(self.user1.has_perm('perm', TestObj()), False) self.assertEqual(self.user1.has_perm('perm', TestObj()), False)
self.assertEqual(self.user1.has_perm('inactive', TestObj()), True) self.assertEqual(self.user1.has_perm('inactive', TestObj()), True)
@ -476,19 +466,16 @@ class PermissionDeniedBackendTest(TestCase):
self.user1 = User.objects.create_user('test', 'test@example.com', 'test') self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
self.user1.save() self.user1.save()
@override_settings(AUTHENTICATION_BACKENDS=(backend, ) + @modify_settings(AUTHENTICATION_BACKENDS={'prepend': backend})
tuple(settings.AUTHENTICATION_BACKENDS))
def test_permission_denied(self): def test_permission_denied(self):
"user is not authenticated after a backend raises permission denied #2550" "user is not authenticated after a backend raises permission denied #2550"
self.assertEqual(authenticate(username='test', password='test'), None) self.assertEqual(authenticate(username='test', password='test'), None)
@override_settings(AUTHENTICATION_BACKENDS=tuple( @modify_settings(AUTHENTICATION_BACKENDS={'append': backend})
settings.AUTHENTICATION_BACKENDS) + (backend, ))
def test_authenticates(self): def test_authenticates(self):
self.assertEqual(authenticate(username='test', password='test'), self.user1) self.assertEqual(authenticate(username='test', password='test'), self.user1)
@override_settings(AUTHENTICATION_BACKENDS=(backend, ) + @modify_settings(AUTHENTICATION_BACKENDS={'prepend': backend})
tuple(settings.AUTHENTICATION_BACKENDS))
def test_has_perm_denied(self): def test_has_perm_denied(self):
content_type = ContentType.objects.get_for_model(Group) content_type = ContentType.objects.get_for_model(Group)
perm = Permission.objects.create(name='test', content_type=content_type, codename='test') perm = Permission.objects.create(name='test', content_type=content_type, codename='test')
@ -497,8 +484,7 @@ class PermissionDeniedBackendTest(TestCase):
self.assertIs(self.user1.has_perm('auth.test'), False) self.assertIs(self.user1.has_perm('auth.test'), False)
self.assertIs(self.user1.has_module_perms('auth'), False) self.assertIs(self.user1.has_module_perms('auth'), False)
@override_settings(AUTHENTICATION_BACKENDS=tuple( @modify_settings(AUTHENTICATION_BACKENDS={'append': backend})
settings.AUTHENTICATION_BACKENDS) + (backend, ))
def test_has_perm(self): def test_has_perm(self):
content_type = ContentType.objects.get_for_model(Group) content_type = ContentType.objects.get_for_model(Group)
perm = Permission.objects.create(name='test', content_type=content_type, codename='test') perm = Permission.objects.create(name='test', content_type=content_type, codename='test')
@ -528,7 +514,7 @@ class ChangedBackendSettingsTest(TestCase):
self.TEST_EMAIL, self.TEST_EMAIL,
self.TEST_PASSWORD) self.TEST_PASSWORD)
@override_settings(AUTHENTICATION_BACKENDS=(backend, )) @override_settings(AUTHENTICATION_BACKENDS=[backend])
def test_changed_backend_settings(self): def test_changed_backend_settings(self):
""" """
Tests that removing a backend configured in AUTHENTICATION_BACKENDS Tests that removing a backend configured in AUTHENTICATION_BACKENDS
@ -546,8 +532,8 @@ class ChangedBackendSettingsTest(TestCase):
request.session = self.client.session request.session = self.client.session
# Remove NewModelBackend # Remove NewModelBackend
with self.settings(AUTHENTICATION_BACKENDS=( with self.settings(AUTHENTICATION_BACKENDS=[
'django.contrib.auth.backends.ModelBackend',)): 'django.contrib.auth.backends.ModelBackend']):
# Get the user from the request # Get the user from the request
user = get_user(request) user = get_user(request)
@ -581,7 +567,7 @@ class TypeErrorBackendTest(TestCase):
def setUp(self): def setUp(self):
self.user1 = User.objects.create_user('test', 'test@example.com', 'test') self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
@override_settings(AUTHENTICATION_BACKENDS=(backend, )) @override_settings(AUTHENTICATION_BACKENDS=[backend])
def test_type_error_raised(self): def test_type_error_raised(self):
self.assertRaises(TypeError, authenticate, username='test', password='test') self.assertRaises(TypeError, authenticate, username='test', password='test')
@ -622,7 +608,7 @@ class ImportedBackendTests(TestCase):
backend = 'django.contrib.auth.tests.backend_alias.ImportedModelBackend' backend = 'django.contrib.auth.tests.backend_alias.ImportedModelBackend'
@override_settings(AUTHENTICATION_BACKENDS=(backend, )) @override_settings(AUTHENTICATION_BACKENDS=[backend])
def test_backend_path(self): def test_backend_path(self):
username = 'username' username = 'username'
password = 'password' password = 'password'

View File

@ -60,7 +60,7 @@ class PermWrapperTests(TestCase):
@skipIfCustomUser @skipIfCustomUser
@override_settings( @override_settings(
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='django.contrib.auth.tests.urls', ROOT_URLCONF='django.contrib.auth.tests.urls',
TEMPLATES=AUTH_TEMPLATES, TEMPLATES=AUTH_TEMPLATES,
USE_TZ=False, # required for loading the fixture USE_TZ=False, # required for loading the fixture

View File

@ -21,7 +21,7 @@ from .utils import skipIfCustomUser
@skipIfCustomUser @skipIfCustomUser
@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) @override_settings(USE_TZ=False, PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'])
class UserCreationFormTest(TestCase): class UserCreationFormTest(TestCase):
fixtures = ['authtestdata.json'] fixtures = ['authtestdata.json']
@ -89,7 +89,7 @@ class UserCreationFormTest(TestCase):
@skipIfCustomUser @skipIfCustomUser
@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) @override_settings(USE_TZ=False, PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'])
class AuthenticationFormTest(TestCase): class AuthenticationFormTest(TestCase):
fixtures = ['authtestdata.json'] fixtures = ['authtestdata.json']
@ -202,7 +202,7 @@ class AuthenticationFormTest(TestCase):
@skipIfCustomUser @skipIfCustomUser
@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) @override_settings(USE_TZ=False, PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'])
class SetPasswordFormTest(TestCase): class SetPasswordFormTest(TestCase):
fixtures = ['authtestdata.json'] fixtures = ['authtestdata.json']
@ -230,7 +230,7 @@ class SetPasswordFormTest(TestCase):
@skipIfCustomUser @skipIfCustomUser
@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) @override_settings(USE_TZ=False, PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'])
class PasswordChangeFormTest(TestCase): class PasswordChangeFormTest(TestCase):
fixtures = ['authtestdata.json'] fixtures = ['authtestdata.json']
@ -279,7 +279,7 @@ class PasswordChangeFormTest(TestCase):
@skipIfCustomUser @skipIfCustomUser
@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) @override_settings(USE_TZ=False, PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'])
class UserChangeFormTest(TestCase): class UserChangeFormTest(TestCase):
fixtures = ['authtestdata.json'] fixtures = ['authtestdata.json']
@ -359,7 +359,7 @@ class UserChangeFormTest(TestCase):
@skipIfCustomUser @skipIfCustomUser
@override_settings( @override_settings(
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
TEMPLATES=AUTH_TEMPLATES, TEMPLATES=AUTH_TEMPLATES,
USE_TZ=False, USE_TZ=False,
) )

View File

@ -23,10 +23,15 @@ class RemoteUserTest(TestCase):
known_user2 = 'knownuser2' known_user2 = 'knownuser2'
def setUp(self): def setUp(self):
self.curr_middleware = settings.MIDDLEWARE_CLASSES self.curr_middleware = list(settings.MIDDLEWARE_CLASSES)
self.curr_auth = settings.AUTHENTICATION_BACKENDS self.curr_auth = list(settings.AUTHENTICATION_BACKENDS)
settings.MIDDLEWARE_CLASSES += (self.middleware,) settings.MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES + [self.middleware]
settings.AUTHENTICATION_BACKENDS += (self.backend,) settings.AUTHENTICATION_BACKENDS = settings.AUTHENTICATION_BACKENDS + [self.backend]
def tearDown(self):
"""Restores settings to avoid breaking other tests."""
settings.MIDDLEWARE_CLASSES = self.curr_middleware
settings.AUTHENTICATION_BACKENDS = self.curr_auth
def test_no_remote_user(self): def test_no_remote_user(self):
""" """
@ -143,11 +148,6 @@ class RemoteUserTest(TestCase):
# In backends that do not create new users, it is '' (anonymous user) # In backends that do not create new users, it is '' (anonymous user)
self.assertNotEqual(response.context['user'].username, 'knownuser') self.assertNotEqual(response.context['user'].username, 'knownuser')
def tearDown(self):
"""Restores settings to avoid breaking other tests."""
settings.MIDDLEWARE_CLASSES = self.curr_middleware
settings.AUTHENTICATION_BACKENDS = self.curr_auth
class RemoteUserNoCreateBackend(RemoteUserBackend): class RemoteUserNoCreateBackend(RemoteUserBackend):
"""Backend that doesn't create unknown users.""" """Backend that doesn't create unknown users."""

View File

@ -8,7 +8,7 @@ from django.test import override_settings
@skipIfCustomUser @skipIfCustomUser
@override_settings(USE_TZ=False, @override_settings(USE_TZ=False,
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='django.contrib.auth.tests.urls') ROOT_URLCONF='django.contrib.auth.tests.urls')
class SignalTestCase(TestCase): class SignalTestCase(TestCase):
fixtures = ['authtestdata.json'] fixtures = ['authtestdata.json']

View File

@ -14,7 +14,7 @@ from django.utils.http import urlsafe_base64_encode
@skipIfCustomUser @skipIfCustomUser
@override_settings( @override_settings(
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='django.contrib.auth.tests.urls', ROOT_URLCONF='django.contrib.auth.tests.urls',
) )
class AuthTemplateTests(TestCase): class AuthTemplateTests(TestCase):

View File

@ -22,7 +22,9 @@ from django.utils.encoding import force_text
from django.utils.http import urlquote from django.utils.http import urlquote
from django.utils.six.moves.urllib.parse import urlparse, ParseResult from django.utils.six.moves.urllib.parse import urlparse, ParseResult
from django.utils.translation import LANGUAGE_SESSION_KEY from django.utils.translation import LANGUAGE_SESSION_KEY
from django.test import TestCase, ignore_warnings, override_settings from django.test import (
TestCase, ignore_warnings, modify_settings, override_settings,
)
from django.test.utils import patch_logger from django.test.utils import patch_logger
from django.middleware.csrf import CsrfViewMiddleware from django.middleware.csrf import CsrfViewMiddleware
from django.contrib.sessions.middleware import SessionMiddleware from django.contrib.sessions.middleware import SessionMiddleware
@ -34,13 +36,13 @@ from .utils import skipIfCustomUser
@override_settings( @override_settings(
LANGUAGES=( LANGUAGES=[
('en', 'English'), ('en', 'English'),
), ],
LANGUAGE_CODE='en', LANGUAGE_CODE='en',
TEMPLATES=AUTH_TEMPLATES, TEMPLATES=AUTH_TEMPLATES,
USE_TZ=False, USE_TZ=False,
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='django.contrib.auth.tests.urls', ROOT_URLCONF='django.contrib.auth.tests.urls',
) )
class AuthViewsTestCase(TestCase): class AuthViewsTestCase(TestCase):
@ -444,9 +446,9 @@ class ChangePasswordTest(AuthViewsTestCase):
self.assertURLEqual(response.url, '/password_reset/') self.assertURLEqual(response.url, '/password_reset/')
@override_settings(MIDDLEWARE_CLASSES=list(settings.MIDDLEWARE_CLASSES) + [ @modify_settings(MIDDLEWARE_CLASSES={
'django.contrib.auth.middleware.SessionAuthenticationMiddleware' 'append': 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
]) })
class SessionAuthenticationTests(AuthViewsTestCase): class SessionAuthenticationTests(AuthViewsTestCase):
def test_user_password_change_updates_session(self): def test_user_password_change_updates_session(self):
""" """
@ -815,14 +817,14 @@ class LogoutTest(AuthViewsTestCase):
self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], 'pl') self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], 'pl')
# Redirect in test_user_change_password will fail if session auth hash
# isn't updated after password change (#21649)
@skipIfCustomUser @skipIfCustomUser
@modify_settings(MIDDLEWARE_CLASSES={
'append': 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
})
@override_settings( @override_settings(
# Redirect in test_user_change_password will fail if session auth hash PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
# isn't updated after password change (#21649)
MIDDLEWARE_CLASSES=list(settings.MIDDLEWARE_CLASSES) + [
'django.contrib.auth.middleware.SessionAuthenticationMiddleware'
],
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),
ROOT_URLCONF='django.contrib.auth.tests.urls_admin', ROOT_URLCONF='django.contrib.auth.tests.urls_admin',
) )
class ChangelistTests(AuthViewsTestCase): class ChangelistTests(AuthViewsTestCase):

View File

@ -8,14 +8,14 @@ from .settings import FLATPAGES_TEMPLATES
@override_settings( @override_settings(
LOGIN_URL='/accounts/login/', LOGIN_URL='/accounts/login/',
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
), ],
ROOT_URLCONF='django.contrib.flatpages.tests.urls', ROOT_URLCONF='django.contrib.flatpages.tests.urls',
CSRF_FAILURE_VIEW='django.views.csrf.csrf_failure', CSRF_FAILURE_VIEW='django.views.csrf.csrf_failure',
TEMPLATES=FLATPAGES_TEMPLATES, TEMPLATES=FLATPAGES_TEMPLATES,

View File

@ -37,7 +37,7 @@ class FlatpageAdminFormTests(TestCase):
self.assertEqual(form.errors['url'], ["URL is missing a leading slash."]) self.assertEqual(form.errors['url'], ["URL is missing a leading slash."])
@override_settings(APPEND_SLASH=True, @override_settings(APPEND_SLASH=True,
MIDDLEWARE_CLASSES=('django.middleware.common.CommonMiddleware',)) MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'])
def test_flatpage_requires_trailing_slash_with_append_slash(self): def test_flatpage_requires_trailing_slash_with_append_slash(self):
form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data)) form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
with translation.override('en'): with translation.override('en'):
@ -45,7 +45,7 @@ class FlatpageAdminFormTests(TestCase):
self.assertEqual(form.errors['url'], ["URL is missing a trailing slash."]) self.assertEqual(form.errors['url'], ["URL is missing a trailing slash."])
@override_settings(APPEND_SLASH=False, @override_settings(APPEND_SLASH=False,
MIDDLEWARE_CLASSES=('django.middleware.common.CommonMiddleware',)) MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'])
def test_flatpage_doesnt_requires_trailing_slash_without_append_slash(self): def test_flatpage_doesnt_requires_trailing_slash_without_append_slash(self):
form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data)) form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
self.assertTrue(form.is_valid()) self.assertTrue(form.is_valid())

View File

@ -9,14 +9,14 @@ from .settings import FLATPAGES_TEMPLATES
@override_settings( @override_settings(
LOGIN_URL='/accounts/login/', LOGIN_URL='/accounts/login/',
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
), ],
ROOT_URLCONF='django.contrib.flatpages.tests.urls', ROOT_URLCONF='django.contrib.flatpages.tests.urls',
TEMPLATES=FLATPAGES_TEMPLATES, TEMPLATES=FLATPAGES_TEMPLATES,
SITE_ID=1, SITE_ID=1,
@ -87,14 +87,14 @@ class FlatpageMiddlewareTests(TestCase):
@override_settings( @override_settings(
APPEND_SLASH=True, APPEND_SLASH=True,
LOGIN_URL='/accounts/login/', LOGIN_URL='/accounts/login/',
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
), ],
ROOT_URLCONF='django.contrib.flatpages.tests.urls', ROOT_URLCONF='django.contrib.flatpages.tests.urls',
TEMPLATES=FLATPAGES_TEMPLATES, TEMPLATES=FLATPAGES_TEMPLATES,
SITE_ID=1, SITE_ID=1,

View File

@ -7,14 +7,14 @@ from .settings import FLATPAGES_TEMPLATES
@override_settings( @override_settings(
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
), ],
ROOT_URLCONF='django.contrib.flatpages.tests.urls', ROOT_URLCONF='django.contrib.flatpages.tests.urls',
TEMPLATES=FLATPAGES_TEMPLATES, TEMPLATES=FLATPAGES_TEMPLATES,
SITE_ID=1, SITE_ID=1,

View File

@ -9,14 +9,14 @@ from .settings import FLATPAGES_TEMPLATES
@override_settings( @override_settings(
LOGIN_URL='/accounts/login/', LOGIN_URL='/accounts/login/',
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
# no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware' # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
), ],
ROOT_URLCONF='django.contrib.flatpages.tests.urls', ROOT_URLCONF='django.contrib.flatpages.tests.urls',
TEMPLATES=FLATPAGES_TEMPLATES, TEMPLATES=FLATPAGES_TEMPLATES,
SITE_ID=1, SITE_ID=1,
@ -75,14 +75,14 @@ class FlatpageViewTests(TestCase):
@override_settings( @override_settings(
APPEND_SLASH=True, APPEND_SLASH=True,
LOGIN_URL='/accounts/login/', LOGIN_URL='/accounts/login/',
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
# no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware' # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
), ],
ROOT_URLCONF='django.contrib.flatpages.tests.urls', ROOT_URLCONF='django.contrib.flatpages.tests.urls',
TEMPLATES=FLATPAGES_TEMPLATES, TEMPLATES=FLATPAGES_TEMPLATES,
SITE_ID=1, SITE_ID=1,

View File

@ -283,7 +283,7 @@ class Command(BaseCommand):
self.default_locale_path = self.locale_paths[0] self.default_locale_path = self.locale_paths[0]
self.invoked_for_django = True self.invoked_for_django = True
else: else:
self.locale_paths.extend(list(settings.LOCALE_PATHS)) self.locale_paths.extend(settings.LOCALE_PATHS)
# Allow to run makemessages inside an app dir # Allow to run makemessages inside an app dir
if os.path.isdir('locale'): if os.path.isdir('locale'):
self.locale_paths.append(os.path.abspath('locale')) self.locale_paths.append(os.path.abspath('locale'))

View File

@ -231,7 +231,7 @@ def do_get_language_info_list(parser, token):
""" """
This will store a list of language information dictionaries for the given This will store a list of language information dictionaries for the given
language codes in a context variable. The language codes can be specified language codes in a context variable. The language codes can be specified
either as a list of strings or a settings.LANGUAGES style tuple (or any either as a list of strings or a settings.LANGUAGES style list (or any
sequence of sequences whose first items are language codes). sequence of sequences whose first items are language codes).
Usage:: Usage::

View File

@ -20,14 +20,14 @@ _format_cache = {}
_format_modules_cache = {} _format_modules_cache = {}
ISO_INPUT_FORMATS = { ISO_INPUT_FORMATS = {
'DATE_INPUT_FORMATS': ('%Y-%m-%d',), 'DATE_INPUT_FORMATS': ['%Y-%m-%d'],
'TIME_INPUT_FORMATS': ('%H:%M:%S', '%H:%M:%S.%f', '%H:%M'), 'TIME_INPUT_FORMATS': ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'],
'DATETIME_INPUT_FORMATS': ( 'DATETIME_INPUT_FORMATS': [
'%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S',
'%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M:%S.%f',
'%Y-%m-%d %H:%M', '%Y-%m-%d %H:%M',
'%Y-%m-%d' '%Y-%m-%d'
), ],
} }

View File

@ -205,7 +205,7 @@ def get_javascript_catalog(locale, domain, packages):
path = os.path.join(os.path.dirname(upath(p.__file__)), 'locale') path = os.path.join(os.path.dirname(upath(p.__file__)), 'locale')
paths.append(path) paths.append(path)
# add the filesystem paths listed in the LOCALE_PATHS setting # add the filesystem paths listed in the LOCALE_PATHS setting
paths.extend(list(reversed(settings.LOCALE_PATHS))) paths.extend(reversed(settings.LOCALE_PATHS))
# first load all english languages files for defaults # first load all english languages files for defaults
for path in paths: for path in paths:
try: try:

View File

@ -31,20 +31,20 @@ First, you must add the
:setting:`MIDDLEWARE_CLASSES` setting **after** the :setting:`MIDDLEWARE_CLASSES` setting **after** the
:class:`django.contrib.auth.middleware.AuthenticationMiddleware`:: :class:`django.contrib.auth.middleware.AuthenticationMiddleware`::
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = [
'...', '...',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware', 'django.contrib.auth.middleware.RemoteUserMiddleware',
'...', '...',
) ]
Next, you must replace the :class:`~django.contrib.auth.backends.ModelBackend` Next, you must replace the :class:`~django.contrib.auth.backends.ModelBackend`
with :class:`~django.contrib.auth.backends.RemoteUserBackend` in the with :class:`~django.contrib.auth.backends.RemoteUserBackend` in the
:setting:`AUTHENTICATION_BACKENDS` setting:: :setting:`AUTHENTICATION_BACKENDS` setting::
AUTHENTICATION_BACKENDS = ( AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.RemoteUserBackend', 'django.contrib.auth.backends.RemoteUserBackend',
) ]
With this setup, ``RemoteUserMiddleware`` will detect the username in With this setup, ``RemoteUserMiddleware`` will detect the username in
``request.META['REMOTE_USER']`` and will authenticate and auto-login that user ``request.META['REMOTE_USER']`` and will authenticate and auto-login that user

View File

@ -73,14 +73,14 @@ those are usually just people typing in broken URLs or broken Web 'bots).
Put it towards the top of your :setting:`MIDDLEWARE_CLASSES` setting. Put it towards the top of your :setting:`MIDDLEWARE_CLASSES` setting.
You can tell Django to stop reporting particular 404s by tweaking the You can tell Django to stop reporting particular 404s by tweaking the
:setting:`IGNORABLE_404_URLS` setting. It should be a tuple of compiled :setting:`IGNORABLE_404_URLS` setting. It should be a list of compiled
regular expression objects. For example:: regular expression objects. For example::
import re import re
IGNORABLE_404_URLS = ( IGNORABLE_404_URLS = [
re.compile(r'\.(php|cgi)$'), re.compile(r'\.(php|cgi)$'),
re.compile(r'^/phpmyadmin/'), re.compile(r'^/phpmyadmin/'),
) ]
In this example, a 404 to any URL ending with ``.php`` or ``.cgi`` will *not* be In this example, a 404 to any URL ending with ``.php`` or ``.cgi`` will *not* be
reported. Neither will any URL starting with ``/phpmyadmin/``. reported. Neither will any URL starting with ``/phpmyadmin/``.
@ -89,11 +89,11 @@ The following example shows how to exclude some conventional URLs that browsers
crawlers often request:: crawlers often request::
import re import re
IGNORABLE_404_URLS = ( IGNORABLE_404_URLS = [
re.compile(r'^/apple-touch-icon.*\.png$'), re.compile(r'^/apple-touch-icon.*\.png$'),
re.compile(r'^/favicon\.ico$'), re.compile(r'^/favicon\.ico$'),
re.compile(r'^/robots\.txt$'), re.compile(r'^/robots\.txt$'),
) ]
(Note that these are regular expressions, so we put a backslash in front of (Note that these are regular expressions, so we put a backslash in front of
periods to escape them.) periods to escape them.)

View File

@ -55,10 +55,10 @@ particular app. In addition to using a ``static/`` directory inside your apps,
you can define a list of directories (:setting:`STATICFILES_DIRS`) in your you can define a list of directories (:setting:`STATICFILES_DIRS`) in your
settings file where Django will also look for static files. For example:: settings file where Django will also look for static files. For example::
STATICFILES_DIRS = ( STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), os.path.join(BASE_DIR, "static"),
'/var/www/static/', '/var/www/static/',
) ]
See the documentation for the :setting:`STATICFILES_FINDERS` setting for See the documentation for the :setting:`STATICFILES_FINDERS` setting for
details on how ``staticfiles`` finds your files. details on how ``staticfiles`` finds your files.

View File

@ -312,14 +312,14 @@ example:
ADMINS ADMINS
------ ------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
A tuple that lists people who get code error notifications. When A list of all the people who get code error notifications. When
``DEBUG=False`` and a view raises an exception, Django will email these people ``DEBUG=False`` and a view raises an exception, Django will email these people
with the full exception information. Each member of the tuple should be a tuple with the full exception information. Each member of the list should be a tuple
of (Full name, email address). Example:: of (Full name, email address). Example::
(('John', 'john@example.com'), ('Mary', 'mary@example.com')) [('John', 'john@example.com'), ('Mary', 'mary@example.com')]
Note that Django will email *all* of these people whenever an error happens. Note that Django will email *all* of these people whenever an error happens.
See :doc:`/howto/error-reporting` for more information. See :doc:`/howto/error-reporting` for more information.

View File

@ -159,10 +159,10 @@ this. For a small app like polls, this process isn't too difficult.
1. Add "polls" to your INSTALLED_APPS setting like this:: 1. Add "polls" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = ( INSTALLED_APPS = [
... ...
'polls', 'polls',
) ]
2. Include the polls URLconf in your project urls.py like this:: 2. Include the polls URLconf in your project urls.py like this::

View File

@ -422,7 +422,7 @@ look like this:
.. snippet:: .. snippet::
:filename: mysite/settings.py :filename: mysite/settings.py
INSTALLED_APPS = ( INSTALLED_APPS = [
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',
@ -430,7 +430,7 @@ look like this:
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'polls', 'polls',
) ]
Now Django knows to include the ``polls`` app. Let's run another command: Now Django knows to include the ``polls`` app. Let's run another command:

View File

@ -55,11 +55,11 @@ To set the same ``X-Frame-Options`` value for all responses in your site, put
``'django.middleware.clickjacking.XFrameOptionsMiddleware'`` to ``'django.middleware.clickjacking.XFrameOptionsMiddleware'`` to
:setting:`MIDDLEWARE_CLASSES`:: :setting:`MIDDLEWARE_CLASSES`::
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = [
... ...
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
... ...
) ]
This middleware is enabled in the settings file generated by This middleware is enabled in the settings file generated by
:djadmin:`startproject`. :djadmin:`startproject`.

View File

@ -114,7 +114,7 @@ In addition, modify the :setting:`INSTALLED_APPS` setting to include
:mod:`django.contrib.admin`, :mod:`django.contrib.gis`, :mod:`django.contrib.admin`, :mod:`django.contrib.gis`,
and ``world`` (your newly created application):: and ``world`` (your newly created application)::
INSTALLED_APPS = ( INSTALLED_APPS = [
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',
@ -123,7 +123,7 @@ and ``world`` (your newly created application)::
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django.contrib.gis', 'django.contrib.gis',
'world' 'world'
) ]
Geographic Data Geographic Data
=============== ===============

View File

@ -9,7 +9,7 @@ Settings
.. warning:: .. warning::
Be careful when you override settings, especially when the default value Be careful when you override settings, especially when the default value
is a non-empty tuple or dictionary, such as :setting:`MIDDLEWARE_CLASSES` is a non-empty list or dictionary, such as :setting:`MIDDLEWARE_CLASSES`
and :setting:`STATICFILES_FINDERS`. Make sure you keep the components and :setting:`STATICFILES_FINDERS`. Make sure you keep the components
required by the features of Django you wish to use. required by the features of Django you wish to use.
@ -45,14 +45,14 @@ of the case of the actual model class name.
ADMINS ADMINS
------ ------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
A tuple that lists people who get code error notifications. When A list of all the people who get code error notifications. When
``DEBUG=False`` and a view raises an exception, Django will email these people ``DEBUG=False`` and a view raises an exception, Django will email these people
with the full exception information. Each member of the tuple should be a tuple with the full exception information. Each item in the list should be a tuple
of (Full name, email address). Example:: of (Full name, email address). Example::
(('John', 'john@example.com'), ('Mary', 'mary@example.com')) [('John', 'john@example.com'), ('Mary', 'mary@example.com')]
Note that Django will email *all* of these people whenever an error happens. Note that Django will email *all* of these people whenever an error happens.
See :doc:`/howto/error-reporting` for more information. See :doc:`/howto/error-reporting` for more information.
@ -104,7 +104,7 @@ are bypassing this security protection.
ALLOWED_INCLUDE_ROOTS ALLOWED_INCLUDE_ROOTS
--------------------- ---------------------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
.. deprecated:: 1.8 .. deprecated:: 1.8
@ -117,11 +117,11 @@ Default: ``()`` (Empty tuple)
:setting:`OPTIONS <TEMPLATES-OPTIONS>` of a ``DjangoTemplates`` backend :setting:`OPTIONS <TEMPLATES-OPTIONS>` of a ``DjangoTemplates`` backend
instead. instead.
A tuple of strings representing allowed prefixes for the ``{% ssi %}`` template A list of strings representing allowed prefixes for the ``{% ssi %}`` template
tag. This is a security measure, so that template authors can't access files tag. This is a security measure, so that template authors can't access files
that they shouldn't be accessing. that they shouldn't be accessing.
For example, if :setting:`ALLOWED_INCLUDE_ROOTS` is ``('/home/html', '/var/www')``, For example, if :setting:`ALLOWED_INCLUDE_ROOTS` is ``['/home/html', '/var/www']``,
then ``{% ssi /home/html/foo.txt %}`` would work, but ``{% ssi /etc/passwd %}`` then ``{% ssi /home/html/foo.txt %}`` would work, but ``{% ssi /etc/passwd %}``
wouldn't. wouldn't.
@ -853,15 +853,15 @@ DATE_INPUT_FORMATS
Default:: Default::
( [
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
'%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
'%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
'%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
'%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
) ]
A tuple of formats that will be accepted when inputting data on a date field. A list of formats that will be accepted when inputting data on a date field.
Formats will be tried in order, using the first valid one. Note that these Formats will be tried in order, using the first valid one. Note that these
format strings use Python's datetime_ module syntax, not the format strings format strings use Python's datetime_ module syntax, not the format strings
from the ``date`` Django template tag. from the ``date`` Django template tag.
@ -894,7 +894,7 @@ DATETIME_INPUT_FORMATS
Default:: Default::
( [
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
@ -907,9 +907,9 @@ Default::
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M', # '10/25/06 14:30' '%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06' '%m/%d/%y', # '10/25/06'
) ]
A tuple of formats that will be accepted when inputting data on a datetime A list of formats that will be accepted when inputting data on a datetime
field. Formats will be tried in order, using the first valid one. Note that field. Formats will be tried in order, using the first valid one. Note that
these format strings use Python's datetime_ module syntax, not the format these format strings use Python's datetime_ module syntax, not the format
strings from the ``date`` Django template tag. strings from the ``date`` Django template tag.
@ -1076,7 +1076,7 @@ backend supports it (see :doc:`/topics/db/tablespaces`).
DISALLOWED_USER_AGENTS DISALLOWED_USER_AGENTS
---------------------- ----------------------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
List of compiled regular expression objects representing User-Agent strings that List of compiled regular expression objects representing User-Agent strings that
are not allowed to visit any page, systemwide. Use this for bad robots/crawlers. are not allowed to visit any page, systemwide. Use this for bad robots/crawlers.
@ -1247,10 +1247,10 @@ FILE_UPLOAD_HANDLERS
Default:: Default::
("django.core.files.uploadhandler.MemoryFileUploadHandler", ["django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler") "django.core.files.uploadhandler.TemporaryFileUploadHandler"]
A tuple of handlers to use for uploading. Changing this setting allows complete A list of handlers to use for uploading. Changing this setting allows complete
customization -- even replacement -- of Django's upload process. customization -- even replacement -- of Django's upload process.
See :doc:`/topics/files` for details. See :doc:`/topics/files` for details.
@ -1349,7 +1349,7 @@ Monday and so on.
FIXTURE_DIRS FIXTURE_DIRS
------------- -------------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
List of directories searched for fixture files, in addition to the List of directories searched for fixture files, in addition to the
``fixtures`` directory of each application, in search order. ``fixtures`` directory of each application, in search order.
@ -1419,7 +1419,7 @@ Available formats are :setting:`DATE_FORMAT`, :setting:`TIME_FORMAT`,
IGNORABLE_404_URLS IGNORABLE_404_URLS
------------------ ------------------
Default: ``()`` Default: ``[]`` (Empty list)
List of compiled regular expression objects describing URLs that should be List of compiled regular expression objects describing URLs that should be
ignored when reporting HTTP 404 errors via email (see ignored when reporting HTTP 404 errors via email (see
@ -1438,9 +1438,9 @@ This is only used if
INSTALLED_APPS INSTALLED_APPS
-------------- --------------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
A tuple of strings designating all applications that are enabled in this A list of strings designating all applications that are enabled in this
Django installation. Each string should be a dotted Python path to: Django installation. Each string should be a dotted Python path to:
* an application configuration class, or * an application configuration class, or
@ -1479,9 +1479,9 @@ listed first in :setting:`INSTALLED_APPS` has precedence.
INTERNAL_IPS INTERNAL_IPS
------------ ------------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
A tuple of IP addresses, as strings, that: A list of IP addresses, as strings, that:
* See debug comments, when :setting:`DEBUG` is ``True`` * See debug comments, when :setting:`DEBUG` is ``True``
* Receive X headers in admindocs if the ``XViewMiddleware`` is installed (see * Receive X headers in admindocs if the ``XViewMiddleware`` is installed (see
@ -1581,14 +1581,14 @@ deletes the one.
LANGUAGES LANGUAGES
--------- ---------
Default: A tuple of all available languages. This list is continually growing Default: A list of all available languages. This list is continually growing
and including a copy here would inevitably become rapidly out of date. You can and including a copy here would inevitably become rapidly out of date. You can
see the current list of translated languages by looking in see the current list of translated languages by looking in
``django/conf/global_settings.py`` (or view the `online source`_). ``django/conf/global_settings.py`` (or view the `online source`_).
.. _online source: https://github.com/django/django/blob/master/django/conf/global_settings.py .. _online source: https://github.com/django/django/blob/master/django/conf/global_settings.py
The list is a tuple of two-tuples in the format The list is a list of two-tuples in the format
(:term:`language code<language code>`, ``language name``) -- for example, (:term:`language code<language code>`, ``language name``) -- for example,
``('ja', 'Japanese')``. ``('ja', 'Japanese')``.
This specifies which languages are available for language selection. See This specifies which languages are available for language selection. See
@ -1605,27 +1605,27 @@ Here's a sample settings file::
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
LANGUAGES = ( LANGUAGES = [
('de', _('German')), ('de', _('German')),
('en', _('English')), ('en', _('English')),
) ]
.. setting:: LOCALE_PATHS .. setting:: LOCALE_PATHS
LOCALE_PATHS LOCALE_PATHS
------------ ------------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
A tuple of directories where Django looks for translation files. A list of directories where Django looks for translation files.
See :ref:`how-django-discovers-translations`. See :ref:`how-django-discovers-translations`.
Example:: Example::
LOCALE_PATHS = ( LOCALE_PATHS = [
'/home/www/project/common_files/locale', '/home/www/project/common_files/locale',
'/var/local/translations/locale', '/var/local/translations/locale',
) ]
Django will look within each of these paths for the ``<locale_code>/LC_MESSAGES`` Django will look within each of these paths for the ``<locale_code>/LC_MESSAGES``
directories containing the actual translation files. directories containing the actual translation files.
@ -1671,9 +1671,9 @@ configuration process will be skipped.
MANAGERS MANAGERS
-------- --------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
A tuple in the same format as :setting:`ADMINS` that specifies who should get A list in the same format as :setting:`ADMINS` that specifies who should get
broken link notifications when broken link notifications when
:class:`~django.middleware.common.BrokenLinkEmailsMiddleware` is enabled. :class:`~django.middleware.common.BrokenLinkEmailsMiddleware` is enabled.
@ -1735,10 +1735,10 @@ MIDDLEWARE_CLASSES
Default:: Default::
('django.middleware.common.CommonMiddleware', ['django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware') 'django.middleware.csrf.CsrfViewMiddleware']
A tuple of middleware classes to use. See :doc:`/topics/http/middleware`. A list of middleware classes to use. See :doc:`/topics/http/middleware`.
.. setting:: MIGRATION_MODULES .. setting:: MIGRATION_MODULES
@ -2220,20 +2220,20 @@ TEMPLATE_CONTEXT_PROCESSORS
Default:: Default::
("django.contrib.auth.context_processors.auth", ["django.contrib.auth.context_processors.auth",
"django.template.context_processors.debug", "django.template.context_processors.debug",
"django.template.context_processors.i18n", "django.template.context_processors.i18n",
"django.template.context_processors.media", "django.template.context_processors.media",
"django.template.context_processors.static", "django.template.context_processors.static",
"django.template.context_processors.tz", "django.template.context_processors.tz",
"django.contrib.messages.context_processors.messages") "django.contrib.messages.context_processors.messages"]
.. deprecated:: 1.8 .. deprecated:: 1.8
Set the ``'context_processors'`` option in the :setting:`OPTIONS Set the ``'context_processors'`` option in the :setting:`OPTIONS
<TEMPLATES-OPTIONS>` of a ``DjangoTemplates`` backend instead. <TEMPLATES-OPTIONS>` of a ``DjangoTemplates`` backend instead.
A tuple of callables that are used to populate the context in ``RequestContext``. A list of callables that are used to populate the context in ``RequestContext``.
These callables take a request object as their argument and return a dictionary These callables take a request object as their argument and return a dictionary
of items to be merged into the context. of items to be merged into the context.
@ -2265,7 +2265,7 @@ See also :setting:`DEBUG`.
TEMPLATE_DIRS TEMPLATE_DIRS
------------- -------------
Default: ``()`` (Empty tuple) Default: ``[]`` (Empty list)
.. deprecated:: 1.8 .. deprecated:: 1.8
@ -2286,15 +2286,15 @@ TEMPLATE_LOADERS
Default:: Default::
('django.template.loaders.filesystem.Loader', ['django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader') 'django.template.loaders.app_directories.Loader']
.. deprecated:: 1.8 .. deprecated:: 1.8
Set the ``'loaders'`` option in the :setting:`OPTIONS <TEMPLATES-OPTIONS>` Set the ``'loaders'`` option in the :setting:`OPTIONS <TEMPLATES-OPTIONS>`
of a ``DjangoTemplates`` backend instead. of a ``DjangoTemplates`` backend instead.
A tuple of template loader classes, specified as strings. Each ``Loader`` class A list of template loader classes, specified as strings. Each ``Loader`` class
knows how to import templates from a particular source. Optionally, a tuple can be knows how to import templates from a particular source. Optionally, a tuple can be
used instead of a string. The first item in the tuple should be the ``Loader``s used instead of a string. The first item in the tuple should be the ``Loader``s
module, subsequent items are passed to the ``Loader`` during initialization. See module, subsequent items are passed to the ``Loader`` during initialization. See
@ -2381,13 +2381,13 @@ TIME_INPUT_FORMATS
Default:: Default::
( [
'%H:%M:%S', # '14:30:59' '%H:%M:%S', # '14:30:59'
'%H:%M:%S.%f', # '14:30:59.000200' '%H:%M:%S.%f', # '14:30:59.000200'
'%H:%M', # '14:30' '%H:%M', # '14:30'
) ]
A tuple of formats that will be accepted when inputting data on a time field. A list of formats that will be accepted when inputting data on a time field.
Formats will be tried in order, using the first valid one. Note that these Formats will be tried in order, using the first valid one. Note that these
format strings use Python's datetime_ module syntax, not the format strings format strings use Python's datetime_ module syntax, not the format strings
from the ``date`` Django template tag. from the ``date`` Django template tag.
@ -2601,9 +2601,9 @@ Settings for :mod:`django.contrib.auth`.
AUTHENTICATION_BACKENDS AUTHENTICATION_BACKENDS
----------------------- -----------------------
Default: ``('django.contrib.auth.backends.ModelBackend',)`` Default: ``['django.contrib.auth.backends.ModelBackend']``
A tuple of authentication backend classes (as strings) to use when attempting to A list of authentication backend classes (as strings) to use when attempting to
authenticate a user. See the :ref:`authentication backends documentation authenticate a user. See the :ref:`authentication backends documentation
<authentication-backends>` for details. <authentication-backends>` for details.
@ -2683,13 +2683,13 @@ See :ref:`auth_password_storage`.
Default:: Default::
('django.contrib.auth.hashers.PBKDF2PasswordHasher', ['django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher', 'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher', 'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher', 'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher') 'django.contrib.auth.hashers.CryptPasswordHasher']
.. _settings-messages: .. _settings-messages:
@ -3029,21 +3029,21 @@ You may need to :ref:`configure these files to be served in development
STATICFILES_DIRS STATICFILES_DIRS
---------------- ----------------
Default: ``[]`` Default: ``[]`` (Empty list)
This setting defines the additional locations the staticfiles app will traverse This setting defines the additional locations the staticfiles app will traverse
if the ``FileSystemFinder`` finder is enabled, e.g. if you use the if the ``FileSystemFinder`` finder is enabled, e.g. if you use the
:djadmin:`collectstatic` or :djadmin:`findstatic` management command or use the :djadmin:`collectstatic` or :djadmin:`findstatic` management command or use the
static file serving view. static file serving view.
This should be set to a list or tuple of strings that contain full paths to This should be set to a list of strings that contain full paths to
your additional files directory(ies) e.g.:: your additional files directory(ies) e.g.::
STATICFILES_DIRS = ( STATICFILES_DIRS = [
"/home/special.polls.com/polls/static", "/home/special.polls.com/polls/static",
"/home/polls.com/polls/static", "/home/polls.com/polls/static",
"/opt/webfiles/common", "/opt/webfiles/common",
) ]
Note that these paths should use Unix-style forward slashes, even on Windows Note that these paths should use Unix-style forward slashes, even on Windows
(e.g. ``"C:/Users/user/mysite/extra_static_content"``). (e.g. ``"C:/Users/user/mysite/extra_static_content"``).
@ -3055,10 +3055,10 @@ In case you want to refer to files in one of the locations with an additional
namespace, you can **optionally** provide a prefix as ``(prefix, path)`` namespace, you can **optionally** provide a prefix as ``(prefix, path)``
tuples, e.g.:: tuples, e.g.::
STATICFILES_DIRS = ( STATICFILES_DIRS = [
# ... # ...
("downloads", "/opt/webfiles/stats"), ("downloads", "/opt/webfiles/stats"),
) ]
For example, assuming you have :setting:`STATIC_URL` set to ``'/static/'``, the For example, assuming you have :setting:`STATIC_URL` set to ``'/static/'``, the
:djadmin:`collectstatic` management command would collect the "stats" files :djadmin:`collectstatic` management command would collect the "stats" files
@ -3094,8 +3094,8 @@ STATICFILES_FINDERS
Default:: Default::
("django.contrib.staticfiles.finders.FileSystemFinder", ["django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder") "django.contrib.staticfiles.finders.AppDirectoriesFinder"]
The list of finder backends that know how to find static files in The list of finder backends that know how to find static files in
various locations. various locations.

View File

@ -802,7 +802,7 @@ loaders that come with Django:
For example, for this setting:: For example, for this setting::
INSTALLED_APPS = ('myproject.polls', 'myproject.music') INSTALLED_APPS = ['myproject.polls', 'myproject.music']
...then ``get_template('foo.html')`` will look for ``foo.html`` in these ...then ``get_template('foo.html')`` will look for ``foo.html`` in these
directories, in this order: directories, in this order:

View File

@ -21,8 +21,8 @@ Here's how to define :setting:`TEMPLATES` in your settings module.
If you're using the default value of ``TEMPLATE_LOADERS``, that is, if it If you're using the default value of ``TEMPLATE_LOADERS``, that is, if it
isn't defined in your settings file or if it's set to:: isn't defined in your settings file or if it's set to::
('django.template.loaders.filesystem.Loader', ['django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader') 'django.template.loaders.app_directories.Loader']
then you should define :setting:`TEMPLATES` as follows:: then you should define :setting:`TEMPLATES` as follows::

View File

@ -176,6 +176,12 @@ Database backend API
doesn't implement this. You may want to review the implementation on the doesn't implement this. You may want to review the implementation on the
backends that Django includes for reference (:ticket:`24245`). backends that Django includes for reference (:ticket:`24245`).
Default settings that were tuples are now lists
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The default settings in ``django.conf.global_settings`` were a combination of
lists and tuples. All settings that were formerly tuples are now lists.
Miscellaneous Miscellaneous
~~~~~~~~~~~~~ ~~~~~~~~~~~~~

View File

@ -52,13 +52,13 @@ all of its authentication backends. If the first authentication method fails,
Django tries the second one, and so on, until all backends have been attempted. Django tries the second one, and so on, until all backends have been attempted.
The list of authentication backends to use is specified in the The list of authentication backends to use is specified in the
:setting:`AUTHENTICATION_BACKENDS` setting. This should be a tuple of Python :setting:`AUTHENTICATION_BACKENDS` setting. This should be a list of Python
path names that point to Python classes that know how to authenticate. These path names that point to Python classes that know how to authenticate. These
classes can be anywhere on your Python path. classes can be anywhere on your Python path.
By default, :setting:`AUTHENTICATION_BACKENDS` is set to:: By default, :setting:`AUTHENTICATION_BACKENDS` is set to::
('django.contrib.auth.backends.ModelBackend',) ['django.contrib.auth.backends.ModelBackend']
That's the basic authentication backend that checks the Django users database That's the basic authentication backend that checks the Django users database
and queries the built-in permissions. It does not provide protection against and queries the built-in permissions. It does not provide protection against

View File

@ -49,7 +49,7 @@ first in the list.
The default for :setting:`PASSWORD_HASHERS` is:: The default for :setting:`PASSWORD_HASHERS` is::
PASSWORD_HASHERS = ( PASSWORD_HASHERS = [
'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
@ -57,7 +57,7 @@ The default for :setting:`PASSWORD_HASHERS` is::
'django.contrib.auth.hashers.SHA1PasswordHasher', 'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher', 'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher', 'django.contrib.auth.hashers.CryptPasswordHasher',
) ]
This means that Django will use PBKDF2_ to store all passwords, but will support This means that Django will use PBKDF2_ to store all passwords, but will support
checking passwords stored with PBKDF2SHA1, bcrypt_, SHA1_, etc. The next few checking passwords stored with PBKDF2SHA1, bcrypt_, SHA1_, etc. The next few
@ -83,7 +83,7 @@ To use Bcrypt as your default storage algorithm, do the following:
2. Modify :setting:`PASSWORD_HASHERS` to list ``BCryptSHA256PasswordHasher`` 2. Modify :setting:`PASSWORD_HASHERS` to list ``BCryptSHA256PasswordHasher``
first. That is, in your settings file, you'd put:: first. That is, in your settings file, you'd put::
PASSWORD_HASHERS = ( PASSWORD_HASHERS = [
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
@ -91,7 +91,7 @@ To use Bcrypt as your default storage algorithm, do the following:
'django.contrib.auth.hashers.SHA1PasswordHasher', 'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher', 'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher', 'django.contrib.auth.hashers.CryptPasswordHasher',
) ]
(You need to keep the other entries in this list, or else Django won't (You need to keep the other entries in this list, or else Django won't
be able to upgrade passwords; see below). be able to upgrade passwords; see below).
@ -154,7 +154,7 @@ default PBKDF2 algorithm:
2. Add your new hasher as the first entry in :setting:`PASSWORD_HASHERS`:: 2. Add your new hasher as the first entry in :setting:`PASSWORD_HASHERS`::
PASSWORD_HASHERS = ( PASSWORD_HASHERS = [
'myproject.hashers.MyPBKDF2PasswordHasher', 'myproject.hashers.MyPBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
@ -163,7 +163,7 @@ default PBKDF2 algorithm:
'django.contrib.auth.hashers.SHA1PasswordHasher', 'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher', 'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher', 'django.contrib.auth.hashers.CryptPasswordHasher',
) ]
That's it -- now your Django install will use more iterations when it That's it -- now your Django install will use more iterations when it

View File

@ -437,11 +437,11 @@ entire site. You'll need to add
``'django.middleware.cache.FetchFromCacheMiddleware'`` to your ``'django.middleware.cache.FetchFromCacheMiddleware'`` to your
:setting:`MIDDLEWARE_CLASSES` setting, as in this example:: :setting:`MIDDLEWARE_CLASSES` setting, as in this example::
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = [
'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware',
) ]
.. note:: .. note::

View File

@ -70,11 +70,11 @@ For example, if the models for your application live in the module
application by the :djadmin:`manage.py startapp <startapp>` script), application by the :djadmin:`manage.py startapp <startapp>` script),
:setting:`INSTALLED_APPS` should read, in part:: :setting:`INSTALLED_APPS` should read, in part::
INSTALLED_APPS = ( INSTALLED_APPS = [
#... #...
'myapp', 'myapp',
#... #...
) ]
When you add new apps to :setting:`INSTALLED_APPS`, be sure to run When you add new apps to :setting:`INSTALLED_APPS`, be sure to run
:djadmin:`manage.py migrate <migrate>`, optionally making migrations :djadmin:`manage.py migrate <migrate>`, optionally making migrations

View File

@ -132,8 +132,8 @@ handler* -- a small class that handles file data as it gets uploaded. Upload
handlers are initially defined in the :setting:`FILE_UPLOAD_HANDLERS` setting, handlers are initially defined in the :setting:`FILE_UPLOAD_HANDLERS` setting,
which defaults to:: which defaults to::
("django.core.files.uploadhandler.MemoryFileUploadHandler", ["django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",) "django.core.files.uploadhandler.TemporaryFileUploadHandler"]
Together :class:`MemoryFileUploadHandler` and Together :class:`MemoryFileUploadHandler` and
:class:`TemporaryFileUploadHandler` provide Django's default file upload :class:`TemporaryFileUploadHandler` provide Django's default file upload

View File

@ -20,21 +20,21 @@ Activating middleware
===================== =====================
To activate a middleware component, add it to the To activate a middleware component, add it to the
:setting:`MIDDLEWARE_CLASSES` tuple in your Django settings. :setting:`MIDDLEWARE_CLASSES` list in your Django settings.
In :setting:`MIDDLEWARE_CLASSES`, each middleware component is represented by In :setting:`MIDDLEWARE_CLASSES`, each middleware component is represented by
a string: the full Python path to the middleware's class name. For example, a string: the full Python path to the middleware's class name. For example,
here's the default value created by :djadmin:`django-admin startproject here's the default value created by :djadmin:`django-admin startproject
<startproject>`:: <startproject>`::
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
) ]
A Django installation doesn't require any middleware — A Django installation doesn't require any middleware —
:setting:`MIDDLEWARE_CLASSES` can be empty, if you'd like — but it's strongly :setting:`MIDDLEWARE_CLASSES` can be empty, if you'd like — but it's strongly

View File

@ -848,7 +848,7 @@ information for a list of languages (e.g. active languages as specified in
view <set_language-redirect-view>` for an example of how to display a language view <set_language-redirect-view>` for an example of how to display a language
selector using ``{% get_language_info_list %}``. selector using ``{% get_language_info_list %}``.
In addition to :setting:`LANGUAGES` style nested tuples, In addition to :setting:`LANGUAGES` style list of tuples,
``{% get_language_info_list %}`` supports simple lists of language codes. ``{% get_language_info_list %}`` supports simple lists of language codes.
If you do this in your view: If you do this in your view:
@ -1684,11 +1684,11 @@ matters, you should follow these guidelines:
For example, your :setting:`MIDDLEWARE_CLASSES` might look like this:: For example, your :setting:`MIDDLEWARE_CLASSES` might look like this::
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware', 'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
) ]
(For more on middleware, see the :doc:`middleware documentation (For more on middleware, see the :doc:`middleware documentation
</topics/http/middleware>`.) </topics/http/middleware>`.)
@ -1734,10 +1734,10 @@ Notes:
languages (because your application doesn't provide all those languages), languages (because your application doesn't provide all those languages),
set :setting:`LANGUAGES` to a list of languages. For example:: set :setting:`LANGUAGES` to a list of languages. For example::
LANGUAGES = ( LANGUAGES = [
('de', _('German')), ('de', _('German')),
('en', _('English')), ('en', _('English')),
) ]
This example restricts languages that are available for automatic This example restricts languages that are available for automatic
selection to German and English (and any sublanguage, like de-ch or selection to German and English (and any sublanguage, like de-ch or
@ -1752,10 +1752,10 @@ Notes:
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
LANGUAGES = ( LANGUAGES = [
('de', _('German')), ('de', _('German')),
('en', _('English')), ('en', _('English')),
) ]
Once ``LocaleMiddleware`` determines the user's preference, it makes this Once ``LocaleMiddleware`` determines the user's preference, it makes this
preference available as ``request.LANGUAGE_CODE`` for each preference available as ``request.LANGUAGE_CODE`` for each

View File

@ -320,9 +320,9 @@ design. If during your tests you are authenticating many users, you may want
to use a custom settings file and set the :setting:`PASSWORD_HASHERS` setting to use a custom settings file and set the :setting:`PASSWORD_HASHERS` setting
to a faster hashing algorithm:: to a faster hashing algorithm::
PASSWORD_HASHERS = ( PASSWORD_HASHERS = [
'django.contrib.auth.hashers.MD5PasswordHasher', 'django.contrib.auth.hashers.MD5PasswordHasher',
) ]
Don't forget to also include in :setting:`PASSWORD_HASHERS` any hashing Don't forget to also include in :setting:`PASSWORD_HASHERS` any hashing
algorithm used in fixtures, if any. algorithm used in fixtures, if any.

View File

@ -664,7 +664,7 @@ class AdminLogNodeTestCase(TestCase):
self.assertEqual(template.render(context), '') self.assertEqual(template.render(context), '')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_changelist.urls") ROOT_URLCONF="admin_changelist.urls")
class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):

View File

@ -8,7 +8,7 @@ from django.test import TestCase, override_settings
from .models import Action, Person, Car from .models import Action, Person, Car
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_custom_urls.urls',) ROOT_URLCONF='admin_custom_urls.urls',)
class AdminCustomUrlsTest(TestCase): class AdminCustomUrlsTest(TestCase):
""" """
@ -80,7 +80,7 @@ class AdminCustomUrlsTest(TestCase):
self.assertContains(response, 'value="path/to/html/document.html"') self.assertContains(response, 'value="path/to/html/document.html"')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_custom_urls.urls',) ROOT_URLCONF='admin_custom_urls.urls',)
class CustomRedirects(TestCase): class CustomRedirects(TestCase):
fixtures = ['users.json', 'actions.json'] fixtures = ['users.json', 'actions.json']

View File

@ -13,7 +13,7 @@ from .models import Person, Company
@override_settings( @override_settings(
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_docs.urls') ROOT_URLCONF='admin_docs.urls')
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.admindocs'}) @modify_settings(INSTALLED_APPS={'append': 'django.contrib.admindocs'})
class AdminDocsTestCase(TestCase): class AdminDocsTestCase(TestCase):

View File

@ -21,7 +21,7 @@ from .models import (Holder, Inner, Holder2, Inner2, Holder3, Inner3, Person,
INLINE_CHANGELINK_HTML = 'class="inlinechangelink">Change</a>' INLINE_CHANGELINK_HTML = 'class="inlinechangelink">Change</a>'
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_inlines.urls") ROOT_URLCONF="admin_inlines.urls")
class TestInline(TestCase): class TestInline(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -346,7 +346,7 @@ class TestInline(TestCase):
self.assertNotContains(response, INLINE_CHANGELINK_HTML) self.assertNotContains(response, INLINE_CHANGELINK_HTML)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_inlines.urls") ROOT_URLCONF="admin_inlines.urls")
class TestInlineMedia(TestCase): class TestInlineMedia(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -423,7 +423,7 @@ class TestInlineAdminForm(TestCase):
self.assertEqual(iaf2.original_content_type_id, poll_ct.id) self.assertEqual(iaf2.original_content_type_id, poll_ct.id)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_inlines.urls") ROOT_URLCONF="admin_inlines.urls")
class TestInlineProtectedOnDelete(TestCase): class TestInlineProtectedOnDelete(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -650,7 +650,7 @@ class TestInlinePermissions(TestCase):
self.assertContains(response, 'id="id_inner2_set-0-DELETE"') self.assertContains(response, 'id="id_inner2_set-0-DELETE"')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_inlines.urls") ROOT_URLCONF="admin_inlines.urls")
class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):

View File

@ -62,7 +62,7 @@ ERROR_MESSAGE = "Please enter the correct username and password \
for a staff account. Note that both fields may be case-sensitive." for a staff account. Note that both fields may be case-sensitive."
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls", ROOT_URLCONF="admin_views.urls",
USE_I18N=True, USE_L10N=False, LANGUAGE_CODE='en') USE_I18N=True, USE_L10N=False, LANGUAGE_CODE='en')
class AdminViewBasicTestCase(TestCase): class AdminViewBasicTestCase(TestCase):
@ -888,7 +888,7 @@ class AdminCustomTemplateTests(AdminViewBasicTestCase):
self.assertTemplateUsed(response, 'custom_filter_template.html') self.assertTemplateUsed(response, 'custom_filter_template.html')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewFormUrlTest(TestCase): class AdminViewFormUrlTest(TestCase):
fixtures = ["admin-views-users.xml"] fixtures = ["admin-views-users.xml"]
@ -919,7 +919,7 @@ class AdminViewFormUrlTest(TestCase):
self.assertContains(response, 'value="overridden_value"') self.assertContains(response, 'value="overridden_value"')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminJavaScriptTest(TestCase): class AdminJavaScriptTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -961,7 +961,7 @@ class AdminJavaScriptTest(TestCase):
self.assertNotContains(response, 'inlines.min.js') self.assertNotContains(response, 'inlines.min.js')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class SaveAsTests(TestCase): class SaveAsTests(TestCase):
fixtures = ['admin-views-users.xml', 'admin-views-person.xml'] fixtures = ['admin-views-users.xml', 'admin-views-person.xml']
@ -1074,7 +1074,7 @@ def get_perm(Model, perm):
return Permission.objects.get(content_type=ct, codename=perm) return Permission.objects.get(content_type=ct, codename=perm)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewPermissionsTest(TestCase): class AdminViewPermissionsTest(TestCase):
"""Tests for Admin Views Permissions.""" """Tests for Admin Views Permissions."""
@ -1762,7 +1762,7 @@ class AdminViewPermissionsTest(TestCase):
self.client.get('/test_admin/admin7/logout/') self.client.get('/test_admin/admin7/logout/')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewsNoUrlTest(TestCase): class AdminViewsNoUrlTest(TestCase):
"""Regression test for #17333""" """Regression test for #17333"""
@ -1794,7 +1794,7 @@ class AdminViewsNoUrlTest(TestCase):
@skipUnlessDBFeature('can_defer_constraint_checks') @skipUnlessDBFeature('can_defer_constraint_checks')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewDeletedObjectsTest(TestCase): class AdminViewDeletedObjectsTest(TestCase):
fixtures = ['admin-views-users.xml', 'deleted-objects.xml'] fixtures = ['admin-views-users.xml', 'deleted-objects.xml']
@ -1909,7 +1909,7 @@ class AdminViewDeletedObjectsTest(TestCase):
self.assertContains(response, should_contain) self.assertContains(response, should_contain)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class TestGenericRelations(TestCase): class TestGenericRelations(TestCase):
fixtures = ['admin-views-users.xml', 'deleted-objects.xml'] fixtures = ['admin-views-users.xml', 'deleted-objects.xml']
@ -1924,7 +1924,7 @@ class TestGenericRelations(TestCase):
self.assertContains(response, "%s</td>" % plot) self.assertContains(response, "%s</td>" % plot)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewStringPrimaryKeyTest(TestCase): class AdminViewStringPrimaryKeyTest(TestCase):
fixtures = ['admin-views-users.xml', 'string-primary-key.xml'] fixtures = ['admin-views-users.xml', 'string-primary-key.xml']
@ -2079,7 +2079,7 @@ class AdminViewStringPrimaryKeyTest(TestCase):
) )
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class SecureViewTests(TestCase): class SecureViewTests(TestCase):
""" """
@ -2099,7 +2099,7 @@ class SecureViewTests(TestCase):
self.assertEqual(response.context[REDIRECT_FIELD_NAME], secure_url) self.assertEqual(response.context[REDIRECT_FIELD_NAME], secure_url)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewUnicodeTest(TestCase): class AdminViewUnicodeTest(TestCase):
fixtures = ['admin-views-unicode.xml'] fixtures = ['admin-views-unicode.xml']
@ -2151,7 +2151,7 @@ class AdminViewUnicodeTest(TestCase):
self.assertRedirects(response, '/test_admin/admin/admin_views/book/') self.assertRedirects(response, '/test_admin/admin/admin_views/book/')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewListEditable(TestCase): class AdminViewListEditable(TestCase):
fixtures = ['admin-views-users.xml', 'admin-views-person.xml'] fixtures = ['admin-views-users.xml', 'admin-views-person.xml']
@ -2525,7 +2525,7 @@ class AdminViewListEditable(TestCase):
self.assertContains(response, '<th class="field-id"><a href="%s">%d</a></th>' % (link2, story2.id), 1) self.assertContains(response, '<th class="field-id"><a href="%s">%d</a></th>' % (link2, story2.id), 1)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminSearchTest(TestCase): class AdminSearchTest(TestCase):
fixtures = ['admin-views-users', 'multiple-child-classes', fixtures = ['admin-views-users', 'multiple-child-classes',
@ -2609,7 +2609,7 @@ class AdminSearchTest(TestCase):
html=True) html=True)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminInheritedInlinesTest(TestCase): class AdminInheritedInlinesTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -2694,7 +2694,7 @@ class AdminInheritedInlinesTest(TestCase):
self.assertEqual(Persona.objects.all()[0].accounts.count(), 2) self.assertEqual(Persona.objects.all()[0].accounts.count(), 2)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminActionsTest(TestCase): class AdminActionsTest(TestCase):
fixtures = ['admin-views-users.xml', 'admin-views-actions.xml'] fixtures = ['admin-views-users.xml', 'admin-views-actions.xml']
@ -2963,7 +2963,7 @@ action)</option>
self.assertEqual(response.template_name, 'admin/popup_response.html') self.assertEqual(response.template_name, 'admin/popup_response.html')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class TestCustomChangeList(TestCase): class TestCustomChangeList(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -2989,7 +2989,7 @@ class TestCustomChangeList(TestCase):
self.assertNotContains(response, 'First Gadget') self.assertNotContains(response, 'First Gadget')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class TestInlineNotEditable(TestCase): class TestInlineNotEditable(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -3006,7 +3006,7 @@ class TestInlineNotEditable(TestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminCustomQuerysetTest(TestCase): class AdminCustomQuerysetTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -3251,7 +3251,7 @@ class AdminCustomQuerysetTest(TestCase):
self.assertEqual(self.client.get('/test_admin/admin/admin_views/filteredmanager/2/history/').status_code, 200) self.assertEqual(self.client.get('/test_admin/admin/admin_views/filteredmanager/2/history/').status_code, 200)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminInlineFileUploadTest(TestCase): class AdminInlineFileUploadTest(TestCase):
fixtures = ['admin-views-users.xml', 'admin-views-actions.xml'] fixtures = ['admin-views-users.xml', 'admin-views-actions.xml']
@ -3295,7 +3295,7 @@ class AdminInlineFileUploadTest(TestCase):
self.assertContains(response, b"Currently") self.assertContains(response, b"Currently")
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminInlineTests(TestCase): class AdminInlineTests(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -3611,7 +3611,7 @@ class AdminInlineTests(TestCase):
self.assertEqual(Category.objects.get(id=4).order, 0) self.assertEqual(Category.objects.get(id=4).order, 0)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class NeverCacheTests(TestCase): class NeverCacheTests(TestCase):
fixtures = ['admin-views-users.xml', 'admin-views-colors.xml', 'admin-views-fabrics.xml'] fixtures = ['admin-views-users.xml', 'admin-views-colors.xml', 'admin-views-fabrics.xml']
@ -3682,7 +3682,7 @@ class NeverCacheTests(TestCase):
self.assertEqual(get_max_age(response), None) self.assertEqual(get_max_age(response), None)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class PrePopulatedTest(TestCase): class PrePopulatedTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -3715,7 +3715,7 @@ class PrePopulatedTest(TestCase):
self.assertContains(response, "maxLength: 1000") # instead of 1,000 self.assertContains(response, "maxLength: 1000") # instead of 1,000
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class SeleniumAdminViewsFirefoxTests(AdminSeleniumWebDriverTestCase): class SeleniumAdminViewsFirefoxTests(AdminSeleniumWebDriverTestCase):
@ -3944,7 +3944,7 @@ class SeleniumAdminViewsIETests(SeleniumAdminViewsFirefoxTests):
webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver' webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class ReadonlyTest(TestCase): class ReadonlyTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -4052,7 +4052,7 @@ class ReadonlyTest(TestCase):
self.assertNotContains(response, "Some help text for the date (with unicode ŠĐĆŽćžšđ)") self.assertNotContains(response, "Some help text for the date (with unicode ŠĐĆŽćžšđ)")
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class LimitChoicesToInAdminTest(TestCase): class LimitChoicesToInAdminTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -4076,7 +4076,7 @@ class LimitChoicesToInAdminTest(TestCase):
self.assertNotContains(response, marley.username) self.assertNotContains(response, marley.username)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class RawIdFieldsTest(TestCase): class RawIdFieldsTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -4153,7 +4153,7 @@ class RawIdFieldsTest(TestCase):
self.assertContains(response2, "Palin") self.assertContains(response2, "Palin")
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class UserAdminTest(TestCase): class UserAdminTest(TestCase):
""" """
@ -4297,7 +4297,7 @@ class UserAdminTest(TestCase):
self.assertEqual(response.context['form_url'], 'pony') self.assertEqual(response.context['form_url'], 'pony')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class GroupAdminTest(TestCase): class GroupAdminTest(TestCase):
""" """
@ -4329,7 +4329,7 @@ class GroupAdminTest(TestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class CSSTest(TestCase): class CSSTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -4451,7 +4451,7 @@ except ImportError:
@unittest.skipUnless(docutils, "no docutils installed.") @unittest.skipUnless(docutils, "no docutils installed.")
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
@modify_settings(INSTALLED_APPS={'append': ['django.contrib.admindocs', 'django.contrib.flatpages']}) @modify_settings(INSTALLED_APPS={'append': ['django.contrib.admindocs', 'django.contrib.flatpages']})
class AdminDocsTest(TestCase): class AdminDocsTest(TestCase):
@ -4493,7 +4493,7 @@ class AdminDocsTest(TestCase):
@override_settings( @override_settings(
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls", ROOT_URLCONF="admin_views.urls",
TEMPLATES=[{ TEMPLATES=[{
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
@ -4522,7 +4522,7 @@ class ValidXHTMLTests(TestCase):
self.assertNotContains(response, ' xml:lang=""') self.assertNotContains(response, ' xml:lang=""')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls", ROOT_URLCONF="admin_views.urls",
USE_THOUSAND_SEPARATOR=True, USE_L10N=True) USE_THOUSAND_SEPARATOR=True, USE_L10N=True)
class DateHierarchyTests(TestCase): class DateHierarchyTests(TestCase):
@ -4645,7 +4645,7 @@ class DateHierarchyTests(TestCase):
self.assert_non_localized_year(response, 2005) self.assert_non_localized_year(response, 2005)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminCustomSaveRelatedTests(TestCase): class AdminCustomSaveRelatedTests(TestCase):
""" """
@ -4714,7 +4714,7 @@ class AdminCustomSaveRelatedTests(TestCase):
self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names) self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewLogoutTest(TestCase): class AdminViewLogoutTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -4740,7 +4740,7 @@ class AdminViewLogoutTest(TestCase):
self.assertContains(response, '<input type="hidden" name="next" value="/test_admin/admin/" />') self.assertContains(response, '<input type="hidden" name="next" value="/test_admin/admin/" />')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminUserMessageTest(TestCase): class AdminUserMessageTest(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -4795,7 +4795,7 @@ class AdminUserMessageTest(TestCase):
html=True) html=True)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminKeepChangeListFiltersTests(TestCase): class AdminKeepChangeListFiltersTests(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']
@ -5078,7 +5078,7 @@ class NamespacedAdminKeepChangeListFiltersTests(AdminKeepChangeListFiltersTests)
admin_site = site2 admin_site = site2
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class TestLabelVisibility(TestCase): class TestLabelVisibility(TestCase):
""" #11277 -Labels of hidden fields in admin were not hidden. """ """ #11277 -Labels of hidden fields in admin were not hidden. """
@ -5119,7 +5119,7 @@ class TestLabelVisibility(TestCase):
self.assertContains(response, '<div class="form-row hidden') self.assertContains(response, '<div class="form-row hidden')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class AdminViewOnSiteTests(TestCase): class AdminViewOnSiteTests(TestCase):
fixtures = ['admin-views-users.xml', 'admin-views-restaurants.xml'] fixtures = ['admin-views-users.xml', 'admin-views-restaurants.xml']
@ -5237,7 +5237,7 @@ class AdminViewOnSiteTests(TestCase):
self.assertIsNone(model_admin.get_view_on_site_url(Worker())) self.assertIsNone(model_admin.get_view_on_site_url(Worker()))
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls") ROOT_URLCONF="admin_views.urls")
class InlineAdminViewOnSiteTest(TestCase): class InlineAdminViewOnSiteTest(TestCase):
fixtures = ['admin-views-users.xml', 'admin-views-restaurants.xml'] fixtures = ['admin-views-users.xml', 'admin-views-restaurants.xml']
@ -5287,7 +5287,7 @@ class TestEtagWithAdminView(TestCase):
@override_settings( @override_settings(
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="admin_views.urls", ROOT_URLCONF="admin_views.urls",
) )
class GetFormsetsWithInlinesArgumentTest(TestCase): class GetFormsetsWithInlinesArgumentTest(TestCase):

View File

@ -167,7 +167,7 @@ class AdminFormfieldForDBFieldTests(TestCase):
self.assertEqual(six.text_type(f.help_text), 'Hold down "Control", or "Command" on a Mac, to select more than one.') self.assertEqual(six.text_type(f.help_text), 'Hold down "Control", or "Command" on a Mac, to select more than one.')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase): class AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase):
fixtures = ["admin-widgets-users.xml"] fixtures = ["admin-widgets-users.xml"]
@ -182,7 +182,7 @@ class AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase):
self.assertContains(response, "Volkswagon Passat") self.assertContains(response, "Volkswagon Passat")
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class AdminForeignKeyWidgetChangeList(DjangoTestCase): class AdminForeignKeyWidgetChangeList(DjangoTestCase):
fixtures = ["admin-widgets-users.xml"] fixtures = ["admin-widgets-users.xml"]
@ -195,7 +195,7 @@ class AdminForeignKeyWidgetChangeList(DjangoTestCase):
self.assertContains(response, '/auth/user/add/') self.assertContains(response, '/auth/user/add/')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class AdminForeignKeyRawIdWidget(DjangoTestCase): class AdminForeignKeyRawIdWidget(DjangoTestCase):
fixtures = ["admin-widgets-users.xml"] fixtures = ["admin-widgets-users.xml"]
@ -537,7 +537,7 @@ class RelatedFieldWidgetWrapperTests(DjangoTestCase):
self.assertFalse(wrapper.can_delete_related) self.assertFalse(wrapper.can_delete_related)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): class DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
@ -715,7 +715,7 @@ class DateTimePickerSeleniumIETests(DateTimePickerSeleniumFirefoxTests):
@skipIf(pytz is None, "this test requires pytz") @skipIf(pytz is None, "this test requires pytz")
@override_settings(TIME_ZONE='Asia/Singapore') @override_settings(TIME_ZONE='Asia/Singapore')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class DateTimePickerShortcutsSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): class DateTimePickerShortcutsSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps
@ -783,7 +783,7 @@ class DateTimePickerShortcutsSeleniumIETests(DateTimePickerShortcutsSeleniumFire
webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver' webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
@ -1038,7 +1038,7 @@ class HorizontalVerticalFilterSeleniumIETests(HorizontalVerticalFilterSeleniumFi
webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver' webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class AdminRawIdWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): class AdminRawIdWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps
@ -1129,7 +1129,7 @@ class AdminRawIdWidgetSeleniumIETests(AdminRawIdWidgetSeleniumFirefoxTests):
webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver' webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF='admin_widgets.urls') ROOT_URLCONF='admin_widgets.urls')
class RelatedFieldWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): class RelatedFieldWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps

View File

@ -1508,10 +1508,10 @@ class CacheHEADTest(TestCase):
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}, },
}, },
LANGUAGES=( LANGUAGES=[
('en', 'English'), ('en', 'English'),
('es', 'Spanish'), ('es', 'Spanish'),
), ],
) )
class CacheI18nTest(TestCase): class CacheI18nTest(TestCase):

View File

@ -113,7 +113,7 @@ class MessageTests(TestCase):
class Django_1_7_0_CompatibilityChecks(TestCase): class Django_1_7_0_CompatibilityChecks(TestCase):
@override_settings(MIDDLEWARE_CLASSES=('django.contrib.sessions.middleware.SessionMiddleware',)) @override_settings(MIDDLEWARE_CLASSES=['django.contrib.sessions.middleware.SessionMiddleware'])
def test_middleware_classes_overridden(self): def test_middleware_classes_overridden(self):
errors = check_1_7_compatibility() errors = check_1_7_compatibility()
self.assertEqual(errors, []) self.assertEqual(errors, [])

View File

@ -48,7 +48,7 @@ class RequestContextProcessorTests(TestCase):
@override_settings( @override_settings(
DEBUG=True, DEBUG=True,
INTERNAL_IPS=('127.0.0.1',), INTERNAL_IPS=['127.0.0.1'],
ROOT_URLCONF='context_processors.urls', ROOT_URLCONF='context_processors.urls',
TEMPLATES=[{ TEMPLATES=[{
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',

View File

@ -28,7 +28,7 @@ MEDIA_ROOT = sys_tempfile.mkdtemp(dir=os.environ['DJANGO_TEST_TEMP_DIR'])
UPLOAD_TO = os.path.join(MEDIA_ROOT, 'test_upload') UPLOAD_TO = os.path.join(MEDIA_ROOT, 'test_upload')
@override_settings(MEDIA_ROOT=MEDIA_ROOT, ROOT_URLCONF='file_uploads.urls', MIDDLEWARE_CLASSES=()) @override_settings(MEDIA_ROOT=MEDIA_ROOT, ROOT_URLCONF='file_uploads.urls', MIDDLEWARE_CLASSES=[])
class FileUploadTests(TestCase): class FileUploadTests(TestCase):
@classmethod @classmethod

View File

@ -10,7 +10,7 @@ from django.test import SimpleTestCase
class LocalizedTimeTests(SimpleTestCase): class LocalizedTimeTests(SimpleTestCase):
def setUp(self): def setUp(self):
# nl/formats.py has customized TIME_INPUT_FORMATS: # nl/formats.py has customized TIME_INPUT_FORMATS:
# ('%H:%M:%S', '%H.%M:%S', '%H.%M', '%H:%M') # ['%H:%M:%S', '%H.%M:%S', '%H.%M', '%H:%M']
activate('nl') activate('nl')
def tearDown(self): def tearDown(self):

View File

@ -17,7 +17,7 @@ from .models import Episode, Media, EpisodePermanent, Category
# Set TEMPLATE_DEBUG to True to ensure {% include %} will raise exceptions. # Set TEMPLATE_DEBUG to True to ensure {% include %} will raise exceptions.
# That is how inlines are rendered and #9498 will bubble up if it is an issue. # That is how inlines are rendered and #9498 will bubble up if it is an issue.
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
TEMPLATE_DEBUG=True, TEMPLATE_DEBUG=True,
ROOT_URLCONF="generic_inline_admin.urls") ROOT_URLCONF="generic_inline_admin.urls")
class GenericAdminViewTest(TestCase): class GenericAdminViewTest(TestCase):
@ -123,7 +123,7 @@ class GenericAdminViewTest(TestCase):
self.assertTrue(formset.get_queryset().ordered) self.assertTrue(formset.get_queryset().ordered)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="generic_inline_admin.urls") ROOT_URLCONF="generic_inline_admin.urls")
class GenericInlineAdminParametersTest(TestCase): class GenericInlineAdminParametersTest(TestCase):
fixtures = ['users.xml'] fixtures = ['users.xml']
@ -270,7 +270,7 @@ class GenericInlineAdminParametersTest(TestCase):
self.assertEqual(formset.max_num, 2) self.assertEqual(formset.max_num, 2)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), @override_settings(PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
ROOT_URLCONF="generic_inline_admin.urls") ROOT_URLCONF="generic_inline_admin.urls")
class GenericInlineAdminWithUniqueTogetherTest(TestCase): class GenericInlineAdminWithUniqueTogetherTest(TestCase):
fixtures = ['users.xml'] fixtures = ['users.xml']

View File

@ -12,14 +12,14 @@ from django.utils import translation
@override_settings( @override_settings(
USE_I18N=True, USE_I18N=True,
LOCALE_PATHS=( LOCALE_PATHS=[
os.path.join(os.path.dirname(upath(__file__)), 'locale'), os.path.join(os.path.dirname(upath(__file__)), 'locale'),
), ],
LANGUAGE_CODE='en', LANGUAGE_CODE='en',
LANGUAGES=( LANGUAGES=[
('en', 'English'), ('en', 'English'),
('fr', 'French'), ('fr', 'French'),
), ],
) )
class ContentTypeTests(TestCase): class ContentTypeTests(TestCase):
def test_verbose_name(self): def test_verbose_name(self):

View File

@ -18,19 +18,19 @@ class PermanentRedirectLocaleMiddleWare(LocaleMiddleware):
@override_settings( @override_settings(
USE_I18N=True, USE_I18N=True,
LOCALE_PATHS=( LOCALE_PATHS=[
os.path.join(os.path.dirname(upath(__file__)), 'locale'), os.path.join(os.path.dirname(upath(__file__)), 'locale'),
), ],
LANGUAGE_CODE='en-us', LANGUAGE_CODE='en-us',
LANGUAGES=( LANGUAGES=[
('nl', 'Dutch'), ('nl', 'Dutch'),
('en', 'English'), ('en', 'English'),
('pt-br', 'Brazilian Portuguese'), ('pt-br', 'Brazilian Portuguese'),
), ],
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'django.middleware.locale.LocaleMiddleware', 'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
), ],
ROOT_URLCONF='i18n.patterns.urls.default', ROOT_URLCONF='i18n.patterns.urls.default',
TEMPLATES=[{ TEMPLATES=[{
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
@ -193,10 +193,10 @@ class URLRedirectTests(URLTestCaseBase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@override_settings( @override_settings(
MIDDLEWARE_CLASSES=( MIDDLEWARE_CLASSES=[
'i18n.patterns.tests.PermanentRedirectLocaleMiddleWare', 'i18n.patterns.tests.PermanentRedirectLocaleMiddleWare',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
), ],
) )
def test_custom_redirect_class(self): def test_custom_redirect_class(self):
response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='en') response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='en')

View File

@ -92,7 +92,7 @@ class PercentRenderingTests(MessageCompilationTests):
self.addCleanup(os.unlink, os.path.join(self.test_dir, self.MO_FILE)) self.addCleanup(os.unlink, os.path.join(self.test_dir, self.MO_FILE))
def test_percent_symbol_escaping(self): def test_percent_symbol_escaping(self):
with override_settings(LOCALE_PATHS=(os.path.join(self.test_dir, 'locale'),)): with override_settings(LOCALE_PATHS=[os.path.join(self.test_dir, 'locale')]):
from django.template import Template, Context from django.template import Template, Context
call_command('compilemessages', locale=[self.LOCALE], stdout=StringIO()) call_command('compilemessages', locale=[self.LOCALE], stdout=StringIO())
with translation.override(self.LOCALE): with translation.override(self.LOCALE):
@ -119,13 +119,13 @@ class MultipleLocaleCompilationTests(MessageCompilationTests):
self.addCleanup(self.rmfile, os.path.join(localedir, self.MO_FILE_FR)) self.addCleanup(self.rmfile, os.path.join(localedir, self.MO_FILE_FR))
def test_one_locale(self): def test_one_locale(self):
with override_settings(LOCALE_PATHS=(os.path.join(self.test_dir, 'locale'),)): with override_settings(LOCALE_PATHS=[os.path.join(self.test_dir, 'locale')]):
call_command('compilemessages', locale=['hr'], stdout=StringIO()) call_command('compilemessages', locale=['hr'], stdout=StringIO())
self.assertTrue(os.path.exists(self.MO_FILE_HR)) self.assertTrue(os.path.exists(self.MO_FILE_HR))
def test_multiple_locales(self): def test_multiple_locales(self):
with override_settings(LOCALE_PATHS=(os.path.join(self.test_dir, 'locale'),)): with override_settings(LOCALE_PATHS=[os.path.join(self.test_dir, 'locale')]):
call_command('compilemessages', locale=['hr', 'fr'], stdout=StringIO()) call_command('compilemessages', locale=['hr', 'fr'], stdout=StringIO())
self.assertTrue(os.path.exists(self.MO_FILE_HR)) self.assertTrue(os.path.exists(self.MO_FILE_HR))
@ -202,14 +202,14 @@ class FuzzyTranslationTest(MessageCompilationTests):
gettext_module._translations = {} # flush cache or test will be useless gettext_module._translations = {} # flush cache or test will be useless
def test_nofuzzy_compiling(self): def test_nofuzzy_compiling(self):
with override_settings(LOCALE_PATHS=(os.path.join(self.test_dir, 'locale'),)): with override_settings(LOCALE_PATHS=[os.path.join(self.test_dir, 'locale')]):
call_command('compilemessages', locale=[self.LOCALE], stdout=StringIO()) call_command('compilemessages', locale=[self.LOCALE], stdout=StringIO())
with translation.override(self.LOCALE): with translation.override(self.LOCALE):
self.assertEqual(ugettext('Lenin'), force_text('Ленин')) self.assertEqual(ugettext('Lenin'), force_text('Ленин'))
self.assertEqual(ugettext('Vodka'), force_text('Vodka')) self.assertEqual(ugettext('Vodka'), force_text('Vodka'))
def test_fuzzy_compiling(self): def test_fuzzy_compiling(self):
with override_settings(LOCALE_PATHS=(os.path.join(self.test_dir, 'locale'),)): with override_settings(LOCALE_PATHS=[os.path.join(self.test_dir, 'locale')]):
call_command('compilemessages', locale=[self.LOCALE], fuzzy=True, stdout=StringIO()) call_command('compilemessages', locale=[self.LOCALE], fuzzy=True, stdout=StringIO())
with translation.override(self.LOCALE): with translation.override(self.LOCALE):
self.assertEqual(ugettext('Lenin'), force_text('Ленин')) self.assertEqual(ugettext('Lenin'), force_text('Ленин'))

View File

@ -721,8 +721,7 @@ class CustomLayoutExtractionTests(ExtractorTests):
management.call_command('makemessages', locale=LOCALE, verbosity=0) management.call_command('makemessages', locale=LOCALE, verbosity=0)
@override_settings( @override_settings(
LOCALE_PATHS=(os.path.join( LOCALE_PATHS=[os.path.join(this_directory, 'project_dir', 'project_locale')],
this_directory, 'project_dir', 'project_locale'),)
) )
def test_project_locale_paths(self): def test_project_locale_paths(self):
""" """

Some files were not shown because too many files have changed in this diff Show More