mod: switch dev to sqlite and add static fallback paths

This commit is contained in:
2026-04-16 21:10:58 +03:00
parent 917bcb42c8
commit 3e67d6cf71
2 changed files with 50 additions and 16 deletions

3
database/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
# Это папака для хранения базы данных SQLite, не должна быть в репозитории.
*.*
*

View File

@@ -11,6 +11,7 @@ For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.1/ref/settings/ https://docs.djangoproject.com/en/4.1/ref/settings/
""" """
import os
from pathlib import Path from pathlib import Path
from oknardia.my_secret import * from oknardia.my_secret import *
import socket import socket
@@ -18,6 +19,14 @@ import socket
# Build paths inside the project like this: BASE_DIR / 'subdir'. # Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent BASE_DIR = Path(__file__).resolve().parent.parent
# Переключатель БД для DEV: по умолчанию используем SQLite.
# Чтобы вернуть MariaDB на DEV, установите OKNARDIA_USE_SQLITE_DEV=0
USE_SQLITE_DEV = os.getenv("OKNARDIA_USE_SQLITE_DEV", "1").strip().lower() in {
"1", "true", "yes", "on"
}
PROJECT_ROOT = BASE_DIR.parent
SQLITE_DB_PATH = PROJECT_ROOT / 'database' / 'oknadria.sqlite3'
# Quick-start development settings - unsuitable for production # Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
@@ -31,8 +40,8 @@ if socket.gethostname() in MY_HOST_DEV:
DEBUG = TEMPLATE_DEBUG = True DEBUG = TEMPLATE_DEBUG = True
else: else:
# Все остальные хосты (подразумевается продакшн) # Все остальные хосты (подразумевается продакшн)
DEBUG = TEMPLATE_DEBUG = True # DEBUG = TEMPLATE_DEBUG = True
# DEBUG = TEMPLATE_DEBUG = False DEBUG = TEMPLATE_DEBUG = False
ALLOWED_HOSTS = MY_ALLOWED_HOSTS ALLOWED_HOSTS = MY_ALLOWED_HOSTS
@@ -123,11 +132,22 @@ if socket.gethostname() in MY_HOST_DEV: # DEBUG: заменяем настр
MEDIA_ROOT = MY_MEDIA_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_MEDIA_ROOT_DEV2 MEDIA_ROOT = MY_MEDIA_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_MEDIA_ROOT_DEV2
SITEMAP_ROOT = MY_SITEMAP_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_SITEMAP_ROOT_DEV2 SITEMAP_ROOT = MY_SITEMAP_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_SITEMAP_ROOT_DEV2
# STATIC_ROOT = MY_STATIC_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_STATIC_ROOT_DEV2 # STATIC_ROOT = MY_STATIC_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_STATIC_ROOT_DEV2
STATICFILES_DIRS = [ dev_static_from_secret = MY_STATIC_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_STATIC_ROOT_DEV2
MY_STATIC_ROOT_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_STATIC_ROOT_DEV2, # Если путь из секрета устарел, используем путь текущего репозитория.
] dev_static_fallback = PROJECT_ROOT / 'public' / 'static'
dev_static_path = dev_static_from_secret if os.path.isdir(dev_static_from_secret) else str(dev_static_fallback)
STATICFILES_DIRS = [dev_static_path]
# путь к каталогу static (в эту переменную использовать для указания пути где будут делаться кэш-блоки для шаблонов) # путь к каталогу static (в эту переменную использовать для указания пути где будут делаться кэш-блоки для шаблонов)
STATIC_BASE_PATH = MY_STATIC_BASE_PATH_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_STATIC_BASE_PATH_DEV2 dev_static_base_from_secret = MY_STATIC_BASE_PATH_DEV1 if socket.gethostname() == MY_HOST_HOME1 else MY_STATIC_BASE_PATH_DEV2
STATIC_BASE_PATH = dev_static_base_from_secret if os.path.isdir(dev_static_base_from_secret) else str(dev_static_fallback)
if USE_SQLITE_DEV:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': SQLITE_DB_PATH,
}
}
else:
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': "django.db.backends.mysql", 'ENGINE': "django.db.backends.mysql",
@@ -160,6 +180,17 @@ else:
} }
TOUCH_RELOAD = MY_TOUCH_RELOAD_PROD TOUCH_RELOAD = MY_TOUCH_RELOAD_PROD
# Для локальной/тестовой разработки можно принудительно включить SQLite даже
# если hostname не попал в MY_HOST_DEV. На прод-хостах (MY_HOST_PROD) override
# не применяется.
if USE_SQLITE_DEV and socket.gethostname() not in MY_HOST_PROD:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': SQLITE_DB_PATH,
}
}
######################################### #########################################
# настройки для почтового сервера (они одинаковые для DEV и PROD) # настройки для почтового сервера (они одинаковые для DEV и PROD)
EMAIL_HOST = MY_EMAIL_HOST_DEV EMAIL_HOST = MY_EMAIL_HOST_DEV