Merge pull request 'dev' (#16) from dev into master
All checks were successful
DEPLOY_MULTI_BRACH/pipeline/head This commit looks good
All checks were successful
DEPLOY_MULTI_BRACH/pipeline/head This commit looks good
Reviewed-on: #16
This commit was merged in pull request #16.
This commit is contained in:
13
.env
13
.env
@@ -1,5 +1,10 @@
|
|||||||
# Seguridad
|
# Seguridad
|
||||||
CONTAINER_NAME=django_local
|
DEBUG=True
|
||||||
PORT=8000
|
SECRET_KEY=una-clave-muy-secreta-y-larga-123456
|
||||||
DEBUG_MODE=1
|
|
||||||
PROJECT_NAME=django_dev_local
|
# Base de Datos (Conectando al PostgreSQL que instalamos)
|
||||||
|
DB_NAME=gitea
|
||||||
|
DB_USER=gitea
|
||||||
|
DB_PASSWORD=gitea
|
||||||
|
DB_HOST=gitea-db
|
||||||
|
DB_PORT=5432
|
||||||
10
.env.example
Normal file
10
.env.example
Normal file
@@ -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
|
||||||
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,2 +1,12 @@
|
|||||||
*.pyc
|
# Configuración personal y secretos
|
||||||
.env
|
.env
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# Docker local (si decides no subirlo)
|
||||||
|
deployments/docker-compose.override.yml
|
||||||
|
deployments/docker-compose.yml
|
||||||
|
|
||||||
|
# Archivos de datos de la DB local
|
||||||
|
postgres_data/
|
||||||
|
local_postgres_data/
|
||||||
|
*.pyc
|
||||||
|
|||||||
13
apps/backend_admin/actions.py
Normal file
13
apps/backend_admin/actions.py
Normal file
@@ -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
|
||||||
|
}
|
||||||
7
apps/backend_admin/urls.py
Normal file
7
apps/backend_admin/urls.py
Normal file
@@ -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'),
|
||||||
|
]
|
||||||
28
apps/backend_admin/views.py
Normal file
28
apps/backend_admin/views.py
Normal file
@@ -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)
|
||||||
@@ -1,6 +1,13 @@
|
|||||||
from django.db import connection
|
from django.db import connection
|
||||||
from apps.common.utils import clean_sql_string, clean_sql_int
|
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):
|
def getData(params):
|
||||||
"""
|
"""
|
||||||
Función estándar para obtener datos de promociones.
|
Función estándar para obtener datos de promociones.
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from .views import get_promocion_view
|
from .views import get_promocion_view, status_view
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# Capa 1: Definición del endpoint
|
# Capa 1: Definición del endpoint
|
||||||
path('obtener/', get_promocion_view, name='get_promocion'),
|
path('obtener/', get_promocion_view, name='get_promocion'),
|
||||||
|
|
||||||
]
|
]
|
||||||
@@ -2,6 +2,10 @@ import logging
|
|||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from .actions import getData
|
from .actions import getData
|
||||||
|
|
||||||
|
from django.http import JsonResponse
|
||||||
|
from .actions import get_status_action
|
||||||
|
|
||||||
|
|
||||||
# Configuración del logger para rastrear la ejecución
|
# Configuración del logger para rastrear la ejecución
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -51,4 +55,19 @@ def get_promocion_view(request):
|
|||||||
return JsonResponse({
|
return JsonResponse({
|
||||||
'status': 'error',
|
'status': 'error',
|
||||||
'message': 'Error interno del servidor'
|
'message': 'Error interno del servidor'
|
||||||
}, status=500)
|
}, 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)
|
||||||
@@ -3,4 +3,5 @@ from django.urls import path, include
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# Redirigimos todas las peticiones de /api/promociones/ a nuestra app
|
# Redirigimos todas las peticiones de /api/promociones/ a nuestra app
|
||||||
path('api/promociones/', include('apps.promociones.urls')),
|
path('api/promociones/', include('apps.promociones.urls')),
|
||||||
|
path('admin/', include('apps.backend_admin.urls')), # El tuyo
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user