mirror of
https://github.com/Balshgit/public.git
synced 2025-09-11 18:00:42 +03:00
151 lines
4.1 KiB
Python
151 lines
4.1 KiB
Python
"""
|
|
This file contains all the settings that defines the development server.
|
|
|
|
SECURITY WARNING: don't run with debug turned on in production!
|
|
"""
|
|
|
|
import logging
|
|
from typing import List
|
|
|
|
from server.settings.components import config
|
|
from server.settings.components.common import (
|
|
DATABASES,
|
|
INSTALLED_APPS,
|
|
MIDDLEWARE,
|
|
)
|
|
|
|
# Setting the development status:
|
|
|
|
DEBUG = True
|
|
|
|
ALLOWED_HOSTS = [
|
|
config('DOMAIN_NAME'),
|
|
'localhost',
|
|
'0.0.0.0', # noqa: S104
|
|
'127.0.0.1',
|
|
'[::1]',
|
|
]
|
|
|
|
|
|
# Installed apps for development only:
|
|
|
|
INSTALLED_APPS += (
|
|
# Better debug:
|
|
'debug_toolbar',
|
|
'nplusone.ext.django',
|
|
|
|
# Linting migrations:
|
|
'django_migration_linter',
|
|
|
|
# django-test-migrations:
|
|
'django_test_migrations.contrib.django_checks.AutoNames',
|
|
# This check might be useful in production as well,
|
|
# so it might be a good idea to move `django-test-migrations`
|
|
# to prod dependencies and use this check in the main `settings.py`.
|
|
# This will check that your database is configured properly,
|
|
# when you run `python manage.py check` before deploy.
|
|
'django_test_migrations.contrib.django_checks.DatabaseConfiguration',
|
|
|
|
# django-extra-checks:
|
|
'extra_checks',
|
|
)
|
|
|
|
|
|
# Static files:
|
|
# https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-STATICFILES_DIRS
|
|
|
|
STATICFILES_DIRS: List[str] = []
|
|
|
|
|
|
# Django debug toolbar:
|
|
# https://django-debug-toolbar.readthedocs.io
|
|
|
|
MIDDLEWARE += (
|
|
'debug_toolbar.middleware.DebugToolbarMiddleware',
|
|
|
|
# https://github.com/bradmontgomery/django-querycount
|
|
# Prints how many queries were executed, useful for the APIs.
|
|
'querycount.middleware.QueryCountMiddleware',
|
|
)
|
|
|
|
|
|
def _custom_show_toolbar(request):
|
|
"""Only show the debug toolbar to users with the superuser flag."""
|
|
return DEBUG and request.user.is_superuser
|
|
|
|
|
|
DEBUG_TOOLBAR_CONFIG = {
|
|
'SHOW_TOOLBAR_CALLBACK':
|
|
'server.settings.environments.development._custom_show_toolbar',
|
|
}
|
|
|
|
# This will make debug toolbar to work with django-csp,
|
|
# since `ddt` loads some scripts from `ajax.googleapis.com`:
|
|
CSP_SCRIPT_SRC = ("'self'", 'ajax.googleapis.com')
|
|
CSP_IMG_SRC = ("'self'", 'data:')
|
|
CSP_CONNECT_SRC = ("'self'",)
|
|
|
|
|
|
# nplusone
|
|
# https://github.com/jmcarp/nplusone
|
|
|
|
# Should be the first in line:
|
|
MIDDLEWARE = ( # noqa: WPS440
|
|
'nplusone.ext.django.NPlusOneMiddleware',
|
|
) + MIDDLEWARE
|
|
|
|
# Logging N+1 requests:
|
|
NPLUSONE_RAISE = True # comment out if you want to allow N+1 requests
|
|
NPLUSONE_LOGGER = logging.getLogger('django')
|
|
NPLUSONE_LOG_LEVEL = logging.WARN
|
|
NPLUSONE_WHITELIST = [
|
|
{'model': 'admin.*'},
|
|
]
|
|
|
|
|
|
# django-test-migrations
|
|
# https://github.com/wemake-services/django-test-migrations
|
|
|
|
# Set of badly named migrations to ignore:
|
|
DTM_IGNORED_MIGRATIONS = frozenset((
|
|
('axes', '*'),
|
|
))
|
|
|
|
|
|
# django-extra-checks
|
|
# https://github.com/kalekseev/django-extra-checks
|
|
|
|
EXTRA_CHECKS = {
|
|
'checks': [
|
|
# Forbid `unique_together`:
|
|
'no-unique-together',
|
|
# Require non empty `upload_to` argument:
|
|
'field-file-upload-to',
|
|
# Use the indexes option instead:
|
|
'no-index-together',
|
|
# Each model must be registered in admin:
|
|
'model-admin',
|
|
# FileField/ImageField must have non empty `upload_to` argument:
|
|
'field-file-upload-to',
|
|
# Text fields shouldn't use `null=True`:
|
|
'field-text-null',
|
|
# Prefer using BooleanField(null=True) instead of NullBooleanField:
|
|
'field-boolean-null',
|
|
# Don't pass `null=False` to model fields (this is django default)
|
|
'field-null',
|
|
# ForeignKey fields must specify db_index explicitly if used in
|
|
# other indexes:
|
|
{'id': 'field-foreign-key-db-index', 'when': 'indexes'},
|
|
# If field nullable `(null=True)`,
|
|
# then default=None argument is redundant and should be removed:
|
|
'field-default-null',
|
|
# Fields with choices must have companion CheckConstraint
|
|
# to enforce choices on database level
|
|
'field-choices-constraint',
|
|
],
|
|
}
|
|
|
|
# Disable persistent DB connections
|
|
# https://docs.djangoproject.com/en/2.2/ref/databases/#caveats
|
|
DATABASES['default']['CONN_MAX_AGE'] = 0
|