From 500bec72012ed661c56fd2773dbc3c76a4472550 Mon Sep 17 00:00:00 2001 From: Max Yakovenko Date: Thu, 12 Jul 2018 23:47:31 +0300 Subject: [PATCH] override project settings --- eshop_project/settings/base.py | 143 +++++++++++++--------- eshop_project/settings/celery.py | 4 +- eshop_project/settings/development.py | 27 ++++- eshop_project/settings/production.py | 40 +++++-- schema.xml | 166 -------------------------- wsgi.py | 5 - 6 files changed, 142 insertions(+), 243 deletions(-) delete mode 100644 schema.xml delete mode 100644 wsgi.py diff --git a/eshop_project/settings/base.py b/eshop_project/settings/base.py index 91136ed..3eca0a6 100644 --- a/eshop_project/settings/base.py +++ b/eshop_project/settings/base.py @@ -11,10 +11,13 @@ https://docs.djangoproject.com/en/1.10/ref/settings/ """ import os + +from django.urls import reverse_lazy + from .env import env # Site basic settings - +SITE_ID = env.str("SITE_ID") SITE_HOST = env.str('SITE_HOST') SITE_URL_HTTP = 'http://{}'.format(SITE_HOST) SITE_URL_HTTPS = 'https://{}'.format(SITE_HOST) @@ -31,52 +34,67 @@ SECRET_KEY = env.str('SECRET_KEY') # SECURITY WARNING: don't run with debug turned on in production! DEBUG = env.bool('DEBUG') +TEMPLATE_DEBUG = DEBUG ALLOWED_HOSTS = tuple(env.list('ALLOWED_HOSTS', default=[])) # Application definition INSTALLED_APPS = [ - 'suit', - 'django.contrib.admin', + + 'core', + 'accounts_ext', + 'index', + 'products', + 'contact_us', + + 'debug_toolbar', + 'registration', + 'crispy_forms', + 'captcha', + 'mptt', + 'import_export', + 'jet', + 'djcelery_email', + 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.postgres', - 'debug_toolbar', - - 'import_export', - 'djcelery_email', - 'mptt', - 'landing', - 'orders', - 'loginsys', - 'core', - 'products', - 'cart', - 'discount', - 'djcelery' + 'django.contrib.sites', + 'django.contrib.flatpages', + 'django.contrib.admin', + # 'landing', + # 'orders', + # 'auth_ext', + # 'cart', + # 'discount', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', + 'debug_toolbar.middleware.DebugToolbarMiddleware', ] ROOT_URLCONF = 'eshop_project.urls' +# Template settings + +TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates') TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')], + 'DIRS': [TEMPLATE_DIR], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -84,26 +102,68 @@ TEMPLATES = [ 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', - 'cart.context_processors.cart', - # 'orders.context_processors.getting_basket_info', + 'contact_us.context_processors.contact_us_form', + 'products.context_processors.product_search_form', + 'products.context_processors.product_root_categories', + # 'cart.context_processors.cart', ], }, }, ] +# Crispy templatetags settings +CRISPY_TEMPLATE_PACK = 'bootstrap' + +# Django simple captcha settings +CAPTCHA_TEST_MODE = env.bool("CAPTCHA_TEST_MODE") +CAPTCHA_OUTPUT_FORMAT = u'%(image)s %(hidden_field)s %(text_field)s' +CAPTCHA_IMAGE_SIZE = (250, 100) +CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.word_challenge' + +# WSGI server definition WSGI_APPLICATION = 'eshop_project.wsgi.application' MPTT_ADMIN_LEVEL_INDENT = 20 # Database -# https://docs.djangoproject.com/en/1.10/ref/settings/#databases +# https://docs.djangoproject.com/en/2.0/ref/settings/#databases DATABASES = { 'extra': { 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR,'eshop.sqlite') + 'NAME': os.path.join(BASE_DIR,'eshop.sqlite.db') } } +# DJANGO REGISTRATION PACKAGE SETTINGS +ACCOUNT_ACTIVATION_DAYS = env.int('ACCOUNT_ACTIVATION_DAYS',default=1) +REGISTRATION_AUTO_LOGIN = env.int('REGISTRATION_AUTO_LOGIN',default=False) +REGISTRATION_OPEN = env.bool('REGISTRATION_OPEN', default=True) +REGISTRATION_EMAIL_HTML = env.bool("REGISTRATION_EMAIL_HTML", True) +REGISTRATION_FORM = 'accounts_ext.forms.RegistrationForm' +AUTHENTICATION_BACKENDS = [ + 'django.contrib.auth.backends.AllowAllUsersModelBackend', +] + +# Authentication settings +LOGOUT_REDIRECT_URL = '/' +LOGIN_REDIRECT_URL = reverse_lazy('index:index') + +# Email backend settings +EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend' +EMAIL_USE_TLS = env.bool('EMAIL_USE_TLS') +EMAIL_USE_SSL = env.bool("EMAIL_USE_SSL") +EMAIL_HOST = env.str('EMAIL_HOST') +EMAIL_PORT = env.int('EMAIL_PORT') +EMAIL_HOST_USER = env.str('EMAIL_HOST_USER') +EMAIL_HOST_PASSWORD = env.str('EMAIL_HOST_PASSWORD') + +# Email fake validation settings +DISPOSABLE_EMAIL_DOMAINS = os.path.join(TEMPLATE_DIR, 'emails/disposable_email_domains.txt') + +# Substituting auth user model +AUTH_USER_MODEL = 'accounts_ext.User' + + # Password validation # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators @@ -143,49 +203,16 @@ USE_TZ = True STATIC_URL = '/static/' STATICFILES_DIRS = ( - os.path.join(BASE_DIR, "static", "static_dev"), + os.path.join(BASE_DIR, "static"), ) -STATIC_ROOT = os.path.join(BASE_DIR, "static/") # , "static_dev") +STATIC_ROOT = os.path.join(BASE_DIR, "assets") MEDIA_URL = '/media/' -MEDIA_ROOT = os.path.join(BASE_DIR, "static", "media") - -AUTH_PROFILE_MODULE = 'core.UserProfile' +MEDIA_ROOT = os.path.join(BASE_DIR, "assets", "media") CART_SESSION_ID = 'cart' - -# Email server settings -EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' -EMAIL_FILE_PATH = '/tmp/eshop-messages' - -# CELERY SETTINGS -import djcelery - -djcelery.setup_loader() - -BROKER_URL = 'amqp://localhost' -# BROKER_URL = 'amqp://78.155.219.170' -# BROKER_USER = "django_shop" -# BROKER_PASSWORD = "django_shop12345" - # for import-export excel data IMPORT_EXPORT_USE_TRANSACTIONS = True - -# WHOOSH_INDEX = os.path.join(os.path.dirname(__file__), "whoosh/") - -# Uncomment for elasticsearch - -# HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' -# HAYSTACK_SEARCH_RESULTS_PER_PAGE = 12 -# HAYSTACK_CONNECTIONS = { -# 'default': { -# 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', -# 'URL': 'http://127.0.0.1:9200', -# 'INDEX_NAME': 'haystack', -# # 'INCLUDE_SPELLING': True, -# }, -# } -# STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' diff --git a/eshop_project/settings/celery.py b/eshop_project/settings/celery.py index ef267b6..a192086 100644 --- a/eshop_project/settings/celery.py +++ b/eshop_project/settings/celery.py @@ -3,5 +3,5 @@ from .base import * CELERY_BROKER_URL= env.str('CELERY_BROKER_URL') CELERY_RESULT_BACKEND = env.str('CELERY_RESULT_BACKEND') CELERY_ACCEPT_CONTENT = tuple(env.list("CELERY_ACCEPT_CONTENT")) -CELERY_RESULT_SERIALIZER = env.str('json') -CELERY_TASK_SERIALIZER = env.str('json') +CELERY_RESULT_SERIALIZER = env.str('CELERY_RESULT_SERIALIZER') +CELERY_TASK_SERIALIZER = env.str('CELERY_TASK_SERIALIZER') diff --git a/eshop_project/settings/development.py b/eshop_project/settings/development.py index f04c16c..d1db256 100644 --- a/eshop_project/settings/development.py +++ b/eshop_project/settings/development.py @@ -1,4 +1,6 @@ from .base import * +_ = lambda s:s +# Database settings DATABASES = { **DATABASES, @@ -12,5 +14,28 @@ DATABASES = { } } -EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend' +# Logging settings +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'filters': { + 'require_debug_false': { + '()': 'django.utils.log.RequireDebugFalse' + } + }, + 'handlers': { + 'mail_admins': { + 'level': 'ERROR', + 'filters': ['require_debug_false'], + 'class': 'django.utils.log.AdminEmailHandler' + } + }, + 'loggers': { + 'django.request': { + 'handlers': ['mail_admins'], + 'level': 'ERROR', + 'propagate': True + } + } +} diff --git a/eshop_project/settings/production.py b/eshop_project/settings/production.py index b906024..8df8620 100644 --- a/eshop_project/settings/production.py +++ b/eshop_project/settings/production.py @@ -1,20 +1,11 @@ from .base import * -from .env import env # Database settings. There must a database url -DATABASES += { +DATABASES = { + **DATABASES, 'default': env.db() } -# Email backend settings -EMAIL_BACKEND = env.str('EMAIL_BACKEND') -EMAIL_USE_TLS = env.bool('EMAIL_USE_TLS') -EMAIL_USE_SSL = env.bool("EMAIL_USE_SSL") -EMAIL_HOST = env.str('EMAIL_HOST') -EMAIL_PORT = env.int('EMAIL_PORT') -EMAIL_HOST_USER = env.str('EMAIL_HOST_USER') -EMAIL_HOST_PASSWORD = env.str('EMAIL_HOST_PASSWORD') - # Email user settings ADMINS = ( ('Dmitriy Belousov', 'dimkasp@mail.ru'), @@ -22,3 +13,30 @@ ADMINS = ( MANAGERS = ADMINS DEFAULT_FROM_EMAIL = 'notreply@russianprograms' + + +# Logging settings + +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'filters': { + 'require_debug_false': { + '()': 'django.utils.RequireDebugFalse' + } + }, + 'handlers': { + 'mail_admins': { + 'level': 'ERROR', + 'filters': ['require_debug_false'], + 'class': 'django.utils.log.AdminEmailHandler' + } + }, + 'loggers': { + 'django.request': { + 'handlers': ['mail_admins'], + 'level': 'ERROR', + 'propagate': True + } + } +} diff --git a/schema.xml b/schema.xml deleted file mode 100644 index 91b649b..0000000 --- a/schema.xml +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - text - - - - diff --git a/wsgi.py b/wsgi.py deleted file mode 100644 index fa04581..0000000 --- a/wsgi.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.core.wsgi import get_wsgi_application -from whitenoise.django import DjangoWhiteNoise - -application = get_wsgi_application() -application = DjangoWhiteNoise(application) \ No newline at end of file