- Environment-split settings: base/local/test/prod with django-environ - Postgres + Redis + Celery wiring (broker, beat, result backend) - All 9 domain app stubs: accounts, courses, cms, tracking, quizzes, training, certificates, reports, notifications - api app: /healthz/ endpoint, custom DRF exception handler, SecurityAuditMiddleware, permissions/throttle/upload-validation stubs - DRF global baseline: JWT+session auth, closed-by-default permissions, cursor/page pagination, drf-spectacular schema generation - Dockerfile (multi-env build arg), docker-compose.yml (local), docker-compose.test.yml (CI-friendly tmpfs Postgres) - pytest.ini with smoke + settings marker definitions - tests/test_smoke.py: startup, URL resolution, healthcheck shape - tests/test_settings_matrix.py: per-profile security assertions - .github/workflows/ci.yml: test, lint, schema CI jobs - .env.example with all required vars documented - .gitignore Co-Authored-By: Paperclip <noreply@paperclip.ing>
39 lines
867 B
Python
39 lines
867 B
Python
from .base import * # noqa: F401, F403
|
|
|
|
DEBUG = False
|
|
ALLOWED_HOSTS = ["testserver", "localhost"]
|
|
|
|
DATABASES = {
|
|
"default": {
|
|
"ENGINE": "django.db.backends.postgresql",
|
|
"NAME": "training_test",
|
|
"USER": "training",
|
|
"PASSWORD": "training",
|
|
"HOST": "localhost",
|
|
"PORT": "5432",
|
|
"TEST": {"NAME": "training_test"},
|
|
}
|
|
}
|
|
|
|
CACHES = {
|
|
"default": {
|
|
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
|
|
}
|
|
}
|
|
|
|
CELERY_TASK_ALWAYS_EAGER = True
|
|
CELERY_TASK_EAGER_PROPAGATES = True
|
|
|
|
# Use in-memory broker for tests
|
|
CELERY_BROKER_URL = "memory://"
|
|
CELERY_RESULT_BACKEND = "cache+memory://"
|
|
|
|
EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend"
|
|
|
|
PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"]
|
|
|
|
LOGGING = {
|
|
"version": 1,
|
|
"disable_existing_loggers": True,
|
|
}
|