Features: 1) Add backup_task to manage database and media backups; 2) Introduce periodic scheduling for backup_task via Celery Beat;
Fixes: 1) Apply `--omit` filter for test coverage reports to exclude unnecessary files; 2) Replace `services_data` volume mounts with named Docker volumes for consistency and cleanup (e.g., `postgres-data`, `redis-data`); Extra: 1) Remove `services_data` from `.gitignore`, Docker-related cleanup in uninstall scripts; 2) Simplified related files removal scripts for Unix and Windows; 3) Minor adjustments in documentation comments.
This commit is contained in:
parent
943aa02cd3
commit
bf6b9f4424
11 changed files with 24 additions and 17 deletions
|
|
@ -70,7 +70,6 @@ pip-delete-this-directory.txt
|
||||||
storefront/Dockerfile
|
storefront/Dockerfile
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
backups/
|
backups/
|
||||||
services_data/
|
|
||||||
static/
|
static/
|
||||||
media/
|
media/
|
||||||
!engine/core/static
|
!engine/core/static
|
||||||
|
|
|
||||||
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -117,14 +117,6 @@ media/
|
||||||
# Webassets
|
# Webassets
|
||||||
.webassets-cache/
|
.webassets-cache/
|
||||||
|
|
||||||
# ──────────────────────────────────────────────────────────────────────────
|
|
||||||
# Docker & service data
|
|
||||||
# ──────────────────────────────────────────────────────────────────────────
|
|
||||||
# Local volume mounts
|
|
||||||
services_data/
|
|
||||||
services_data/postgres/
|
|
||||||
services_data/redis/
|
|
||||||
|
|
||||||
# ──────────────────────────────────────────────────────────────────────────
|
# ──────────────────────────────────────────────────────────────────────────
|
||||||
# Node dependencies
|
# Node dependencies
|
||||||
# ──────────────────────────────────────────────────────────────────────────
|
# ──────────────────────────────────────────────────────────────────────────
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ services:
|
||||||
image: postgis/postgis:17-3.5
|
image: postgis/postgis:17-3.5
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- ./services_data/postgres:/var/lib/postgresql/data/
|
- postgres-data:/var/lib/postgresql/data/
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
env_file:
|
env_file:
|
||||||
|
|
@ -63,7 +63,7 @@ services:
|
||||||
restart: always
|
restart: always
|
||||||
command: redis-server --save "" --appendonly no --slave-read-only no --requirepass "$REDIS_PASSWORD"
|
command: redis-server --save "" --appendonly no --slave-read-only no --requirepass "$REDIS_PASSWORD"
|
||||||
volumes:
|
volumes:
|
||||||
- ./services_data/redis:/data
|
- redis-data:/data
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
|
@ -219,5 +219,7 @@ services:
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
postgres-data:
|
||||||
|
redis-data:
|
||||||
es-data:
|
es-data:
|
||||||
prometheus-data:
|
prometheus-data:
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ from celery.app import shared_task
|
||||||
from constance import config
|
from constance import config
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
|
from django.core.management import call_command
|
||||||
|
|
||||||
from engine.core.models import Product, Promotion
|
from engine.core.models import Product, Promotion
|
||||||
from engine.core.utils.caching import set_default_cache
|
from engine.core.utils.caching import set_default_cache
|
||||||
|
|
@ -21,6 +22,12 @@ from engine.core.vendors import AbstractVendor, VendorInactiveError, delete_stal
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@shared_task(queue="default")
|
||||||
|
def backup_task():
|
||||||
|
call_command("dbbackup", clean=True)
|
||||||
|
call_command("mediabackup", clean=True)
|
||||||
|
|
||||||
|
|
||||||
@shared_task(queue="stock_updater")
|
@shared_task(queue="stock_updater")
|
||||||
def update_products_task() -> tuple[bool, str]:
|
def update_products_task() -> tuple[bool, str]:
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
0
engine/vibes_auth/tests/__init__.py
Normal file
0
engine/vibes_auth/tests/__init__.py
Normal file
|
|
@ -25,6 +25,11 @@ CELERY_RESULT_BACKEND = CELERY_BROKER_URL
|
||||||
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers.DatabaseScheduler"
|
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers.DatabaseScheduler"
|
||||||
|
|
||||||
CELERY_BEAT_SCHEDULE = {
|
CELERY_BEAT_SCHEDULE = {
|
||||||
|
"backup_task": {
|
||||||
|
"task": "engine.core.tasks.backup_task",
|
||||||
|
"schedule": timedelta(days=7),
|
||||||
|
"options": {"queue": "default"},
|
||||||
|
},
|
||||||
"update_products_task": {
|
"update_products_task": {
|
||||||
"task": "engine.core.tasks.update_products_task",
|
"task": "engine.core.tasks.update_products_task",
|
||||||
"schedule": timedelta(minutes=60),
|
"schedule": timedelta(minutes=60),
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,6 @@ DBBACKUP_CONNECTORS = {
|
||||||
"RESTORE_SUFFIX": "--set ON_ERROR_STOP=off",
|
"RESTORE_SUFFIX": "--set ON_ERROR_STOP=off",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DBBACKUP_CLEANUP_KEEP = 2
|
||||||
|
DBBACKUP_CLEANUP_KEEP_MEDIA = 2
|
||||||
|
|
|
||||||
|
|
@ -38,10 +38,10 @@ case "${report:-}" in
|
||||||
docker compose exec app uv run coverage report -m
|
docker compose exec app uv run coverage report -m
|
||||||
;;
|
;;
|
||||||
xml)
|
xml)
|
||||||
docker compose exec app uv run coverage xml
|
docker compose exec app uv run coverage xml --omit='storefront/*,monitoring/*,Dockerfiles/*,*/__init__.py,*/tests/*,*/migrations/*,manage.py,evibes/*'
|
||||||
;;
|
;;
|
||||||
html)
|
html)
|
||||||
docker compose exec app uv run coverage html
|
docker compose exec app uv run coverage html --omit='storefront/*,monitoring/*,Dockerfiles/*,*/__init__.py,*/tests/*,*/migrations/*,manage.py,evibes/*'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid report type: $report (expected xml or html)" >&2
|
echo "Invalid report type: $report (expected xml or html)" >&2
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ docker system prune -a -f --volumes
|
||||||
echo "Unused Docker data cleaned successfully!"
|
echo "Unused Docker data cleaned successfully!"
|
||||||
|
|
||||||
echo "Removing related files..."
|
echo "Removing related files..."
|
||||||
rm -rf ./services_data ./media ./static
|
rm -rf ./media ./static
|
||||||
echo "Related files removed successfully!"
|
echo "Related files removed successfully!"
|
||||||
|
|
||||||
echo "Bye-bye, hope you return later!"
|
echo "Bye-bye, hope you return later!"
|
||||||
|
|
|
||||||
|
|
@ -24,11 +24,11 @@ if (-not $PSBoundParameters.ContainsKey('Report') -or [string]::IsNullOrWhiteSpa
|
||||||
|
|
||||||
switch ($Report.ToLowerInvariant()) {
|
switch ($Report.ToLowerInvariant()) {
|
||||||
'xml' {
|
'xml' {
|
||||||
docker compose exec app uv run coverage xml
|
docker compose exec app uv run coverage xml --omit='storefront/*,monitoring/*,Dockerfiles/*,*/__init__.py,*/tests/*,*/migrations/*,manage.py,evibes/*'
|
||||||
exit $LASTEXITCODE
|
exit $LASTEXITCODE
|
||||||
}
|
}
|
||||||
'html' {
|
'html' {
|
||||||
docker compose exec app uv run coverage html
|
docker compose exec app uv run coverage html --omit='storefront/*,monitoring/*,Dockerfiles/*,*/__init__.py,*/tests/*,*/migrations/*,manage.py,evibes/*'
|
||||||
exit $LASTEXITCODE
|
exit $LASTEXITCODE
|
||||||
}
|
}
|
||||||
default {
|
default {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ if ($LASTEXITCODE -ne 0) {
|
||||||
Write-Host "Unused Docker data cleaned successfully!" -ForegroundColor Green
|
Write-Host "Unused Docker data cleaned successfully!" -ForegroundColor Green
|
||||||
|
|
||||||
Write-Host "Removing related files..." -ForegroundColor Magenta
|
Write-Host "Removing related files..." -ForegroundColor Magenta
|
||||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue ./services_data
|
|
||||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue ./media
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue ./media
|
||||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue ./static
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue ./static
|
||||||
Write-Host "Related files removed successfully!" -ForegroundColor Green
|
Write-Host "Related files removed successfully!" -ForegroundColor Green
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue