diff --git a/rosmorport_tsts/rosmorport_tsts/apps.py b/rosmorport_tsts/rosmorport_tsts/apps.py new file mode 100644 index 0000000..3ced30d --- /dev/null +++ b/rosmorport_tsts/rosmorport_tsts/apps.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from django.apps import AppConfig +from django.utils.translation import gettext_lazy + + +class RosmorportTstsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'rosmorport_tsts' + verbose_name = gettext_lazy("РОСМОРПОРТ") diff --git a/rosmorport_tsts/rosmorport_tsts/settings.py b/rosmorport_tsts/rosmorport_tsts/settings.py index 00a307b..ed8ec97 100644 --- a/rosmorport_tsts/rosmorport_tsts/settings.py +++ b/rosmorport_tsts/rosmorport_tsts/settings.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- """ Django settings for rosmorport_tsts project. @@ -10,8 +11,22 @@ For the full list of settings and their values, see https://docs.djangoproject.com/en/5.0/ref/settings/ """ +import socket from pathlib import Path +# Подключаем секретные настройки в зависимости от машины. +# ATTENTION: В git-репозитории этих файлов нет. +# Воспользуйтесь файлом _my_secret_sample.py как образцом +if socket.gethostname() == 'erjemin-home': + # офисный комп (Windows) + from rosmorport_tsts.my_secret_dev_home_win import * +elif socket.gethostname() in ['m1.N1', 'm1.local', ]: + # домашний комп (MacOS) + from rosmorport_tsts.my_secret_dev_home_mac import * +elif socket.gethostname() in ['orangepi5', 'vm678195', ]: + # продакшн (боевой) сервер + from rosmorport_tsts.my_secret_prod import * + # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -20,16 +35,17 @@ BASE_DIR = Path(__file__).resolve().parent.parent # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure--odm9(0)ad+azp)m6zlwc&j)qpusm_sbh02+7ap&-%fzqb*(zm' +SECRET_KEY = MY_SECRET_KEY # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +# ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ: не работайте в режиме DEBUG в production! +DEBUG = MY_DEBUG -ALLOWED_HOSTS = [] +# Хосты на которых может работать приложение +ALLOWED_HOSTS = MY_ALLOWED_HOSTS -# Application definition - +# Application definition (Определение приложений) INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', @@ -37,6 +53,8 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + + 'rosmorport_tsts.apps.RosmorportTstsConfig', # Приложение проекта ] MIDDLEWARE = [ @@ -54,7 +72,7 @@ ROOT_URLCONF = 'rosmorport_tsts.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], + 'DIRS': [BASE_DIR / 'templates-django', ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -65,6 +83,24 @@ TEMPLATES = [ ], }, }, + # Добавляем шаблонизатор Jinja2 (возможно его использование в будущем) + # { + # 'BACKEND': 'django.template.backends.jinja2.Jinja2', + # 'DIRS': [BASE_DIR / 'templates-jinja2', ], + # 'APP_DIRS': True, + # 'OPTIONS': { + # 'environment': 'roll_cms.my_jinja2_addon.environment', + # 'extensions': [ + # 'roll_cms.my_jinja2_addon.DjangoNow', + # ], + # 'context_processors': [ + # 'django.template.context_processors.debug', + # 'django.template.context_processors.request', + # 'django.contrib.auth.context_processors.auth', + # 'django.contrib.messages.context_processors.messages', + # ], + # }, + # } ] WSGI_APPLICATION = 'rosmorport_tsts.wsgi.application' @@ -81,43 +117,39 @@ DATABASES = { } -# Password validation +# Password validation (Валидаторы паролей) # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators - AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, + {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, + {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, + {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, + {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] -# Internationalization -# https://docs.djangoproject.com/en/5.0/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - +# Internationalization (Интернационализация) +# https://docs.djangoproject.com/en/4.2/topics/i18n/ +LANGUAGE_CODE = 'ru-RU' +TIME_ZONE = 'Europe/Moscow' USE_I18N = True - USE_TZ = True +FIRST_DAY_OF_WEEK = 1 # первый день недели: понедельник +SHORT_DATE_FORMAT = '%Y-%m-%d' +SHORT_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S' # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/5.0/howto/static-files/ STATIC_URL = 'static/' +MEDIA_URL = 'media/' +MEDIA_ROOT = MY_MEDIA_ROOT +SITEMAP_ROOT = MY_SITEMAP_ROOT +STATICFILES_DIRS = [ + MY_STATIC_ROOT +] +TOUCH_RELOAD = MY_TOUCH_RELOAD -# Default primary key field type +# Default primary key field type (Тип primary key в моделях) # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field - DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'