From 102d7c6bfa3cd6f410952438632eb60fb81b3e1d Mon Sep 17 00:00:00 2001 From: minguezsanzjuanjose Date: Sun, 12 Apr 2026 16:02:58 +0200 Subject: [PATCH 1/5] fix --- .env | 13 +++++++++---- .gitignore | 1 - 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.env b/.env index 747b2f7..f8f4030 100644 --- a/.env +++ b/.env @@ -1,5 +1,10 @@ # Seguridad -CONTAINER_NAME=django_local -PORT=8000 -DEBUG_MODE=1 -PROJECT_NAME=django_dev_local \ No newline at end of file +DEBUG=True +SECRET_KEY=una-clave-muy-secreta-y-larga-123456 + +# Base de Datos (Conectando al PostgreSQL que instalamos) +DB_NAME=gitea +DB_USER=gitea +DB_PASSWORD=gitea +DB_HOST=gitea-db +DB_PORT=5432 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 29f322e..0d20b64 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ *.pyc -.env From 6fb3afa47267ffbbc64857837e359a9a70ab9605 Mon Sep 17 00:00:00 2001 From: juanjo <130799031+juanminguezsanz2023@users.noreply.github.com> Date: Sun, 12 Apr 2026 22:11:51 +0200 Subject: [PATCH 2/5] fix para ficheros que no se suben --- .env.example | 10 ++++++++++ .gitignore | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..f8f4030 --- /dev/null +++ b/.env.example @@ -0,0 +1,10 @@ +# Seguridad +DEBUG=True +SECRET_KEY=una-clave-muy-secreta-y-larga-123456 + +# Base de Datos (Conectando al PostgreSQL que instalamos) +DB_NAME=gitea +DB_USER=gitea +DB_PASSWORD=gitea +DB_HOST=gitea-db +DB_PORT=5432 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0d20b64..ef4cf2e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,11 @@ +# Configuración personal y secretos +.env +.env.local + +# Docker local (si decides no subirlo) +deployments/docker-compose.override.yml + +# Archivos de datos de la DB local +postgres_data/ +local_postgres_data/ *.pyc From 1bf333761664def462cc7981788a2847f7982bc9 Mon Sep 17 00:00:00 2001 From: juanjo <130799031+juanminguezsanz2023@users.noreply.github.com> Date: Sun, 12 Apr 2026 22:12:35 +0200 Subject: [PATCH 3/5] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ef4cf2e..51deba6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ # Docker local (si decides no subirlo) deployments/docker-compose.override.yml +deployments/docker-compose.yml # Archivos de datos de la DB local postgres_data/ From e5908b1880f3385c455f759171613029e82ab884 Mon Sep 17 00:00:00 2001 From: juanjo <130799031+juanminguezsanz2023@users.noreply.github.com> Date: Sun, 12 Apr 2026 22:38:49 +0200 Subject: [PATCH 4/5] endpoint de status --- apps/promociones/actions.py | 7 +++++++ apps/promociones/urls.py | 4 +++- apps/promociones/views.py | 21 ++++++++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/apps/promociones/actions.py b/apps/promociones/actions.py index 919260d..c3840d5 100644 --- a/apps/promociones/actions.py +++ b/apps/promociones/actions.py @@ -1,6 +1,13 @@ from django.db import connection from apps.common.utils import clean_sql_string, clean_sql_int + +def get_status_action(): + """ + Acción simple para comprobar que la lógica de la API responde. + """ + return {"status": "ok", "message": "API is running"} + def getData(params): """ Función estándar para obtener datos de promociones. diff --git a/apps/promociones/urls.py b/apps/promociones/urls.py index cb85abd..6e4a6d7 100644 --- a/apps/promociones/urls.py +++ b/apps/promociones/urls.py @@ -1,7 +1,9 @@ from django.urls import path -from .views import get_promocion_view +from .views import get_promocion_view, status_view urlpatterns = [ # Capa 1: Definición del endpoint path('obtener/', get_promocion_view, name='get_promocion'), + path('status/', status_view, name='api_status'), + ] \ No newline at end of file diff --git a/apps/promociones/views.py b/apps/promociones/views.py index 5624e22..85cb46a 100644 --- a/apps/promociones/views.py +++ b/apps/promociones/views.py @@ -2,6 +2,10 @@ import logging from django.http import JsonResponse from .actions import getData +from django.http import JsonResponse +from .actions import get_status_action + + # Configuración del logger para rastrear la ejecución logger = logging.getLogger(__name__) @@ -51,4 +55,19 @@ def get_promocion_view(request): return JsonResponse({ 'status': 'error', 'message': 'Error interno del servidor' - }, status=500) \ No newline at end of file + }, status=500) + +# En views.py +def status_view(request): + # BLOQUE 1: Log de iniciación + logger.info("Iniciando petición de status...") + + # BLOQUE 2: Limpieza y validación de datos (En este caso no hay datos de entrada) + data_cleaned = {} + + # BLOQUE 3: Llamada a la acción + response_data = get_status_action() + + # BLOQUE 4: Log de cierre y retorno + logger.info("Status enviado correctamente.") + return JsonResponse(response_data, status=200) \ No newline at end of file From 3da81a9495c34188dae5727dafad08626d01644c Mon Sep 17 00:00:00 2001 From: juanjo <130799031+juanminguezsanz2023@users.noreply.github.com> Date: Sun, 12 Apr 2026 22:56:35 +0200 Subject: [PATCH 5/5] fix admin status --- apps/backend_admin/actions.py | 13 +++++++++++++ apps/backend_admin/urls.py | 7 +++++++ apps/backend_admin/views.py | 28 ++++++++++++++++++++++++++++ apps/promociones/urls.py | 1 - core/urls.py | 1 + 5 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 apps/backend_admin/actions.py create mode 100644 apps/backend_admin/urls.py create mode 100644 apps/backend_admin/views.py diff --git a/apps/backend_admin/actions.py b/apps/backend_admin/actions.py new file mode 100644 index 0000000..680a1f5 --- /dev/null +++ b/apps/backend_admin/actions.py @@ -0,0 +1,13 @@ +class Admin: + def get_status_action(self): + """ + Lógica para comprobar la salud del sistema. + Devuelve el estado básico del entorno. + """ + # En el futuro, podrías usar get_parameterized aquí si quisieras + # consultar estados en la base de datos. + return { + "status": "ok", + "message": "V-Encore API System is active", + "environment": "dev" # Esto podría venir de una variable de entorno + } \ No newline at end of file diff --git a/apps/backend_admin/urls.py b/apps/backend_admin/urls.py new file mode 100644 index 0000000..fc56f12 --- /dev/null +++ b/apps/backend_admin/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +from .views import status_view + +urlpatterns = [ + # Ruta final: /admin/status/ + path('status/', status_view, name='admin_status'), +] \ No newline at end of file diff --git a/apps/backend_admin/views.py b/apps/backend_admin/views.py new file mode 100644 index 0000000..bf15dde --- /dev/null +++ b/apps/backend_admin/views.py @@ -0,0 +1,28 @@ +from django.http import JsonResponse +from .actions import Admin +import logging + +logger = logging.getLogger(__name__) + +def status_view(request): + # BLOQUE 1: Log de iniciación + logger.info("INICIO - Ejecutando Health Check de Administración.") + + # BLOQUE 2: Limpieza y validación de datos + # Para un status simple, el diccionario de limpieza está vacío + data_cleaned = {} + + # BLOQUE 3: Llamada a la acción + try: + # Instanciamos la clase Admin y llamamos al método + admin_logic = Admin() + response_data = admin_logic.get_status_action() + status_code = 200 + except Exception as e: + logger.error(f"ERROR - Fallo en get_status_action: {str(e)}") + response_data = {"status": "error", "message": "Internal Server Error"} + status_code = 500 + + # BLOQUE 4: Log de cierre y retorno + logger.info(f"FIN - Health Check completado. Status: {status_code}") + return JsonResponse(response_data, status=status_code) \ No newline at end of file diff --git a/apps/promociones/urls.py b/apps/promociones/urls.py index 6e4a6d7..6ec526f 100644 --- a/apps/promociones/urls.py +++ b/apps/promociones/urls.py @@ -4,6 +4,5 @@ from .views import get_promocion_view, status_view urlpatterns = [ # Capa 1: Definición del endpoint path('obtener/', get_promocion_view, name='get_promocion'), - path('status/', status_view, name='api_status'), ] \ No newline at end of file diff --git a/core/urls.py b/core/urls.py index eaae147..d3fff72 100644 --- a/core/urls.py +++ b/core/urls.py @@ -3,4 +3,5 @@ from django.urls import path, include urlpatterns = [ # Redirigimos todas las peticiones de /api/promociones/ a nuestra app path('api/promociones/', include('apps.promociones.urls')), + path('admin/', include('apps.backend_admin.urls')), # El tuyo ]