refactor: reorganizar estructura del proyecto al estándar app/api_config
All checks were successful
DEPLOY_MULTI_BRACH/pipeline/head This commit looks good

- core/ → app/api_config/
- apps/backend_admin/ → app/backend_admin/
- apps/common/ → app/common/
- apps/promociones/ → app/promociones/
- manage.py → app/manage.py
- Añadir app/requirements.txt
- Actualizar todos los imports y referencias (DJANGO_SETTINGS_MODULE, ROOT_URLCONF, WSGI_APPLICATION, INSTALLED_APPS)
- Actualizar Dockerfile con nuevo WORKDIR

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
juanjo
2026-04-16 16:01:17 +02:00
parent 27ccce862d
commit 299428741b
28 changed files with 51 additions and 24 deletions

View File

@@ -0,0 +1,95 @@
from django.http import JsonResponse
from .acciones import Admin
import logging
import json
from django.views.decorators.csrf import csrf_exempt
from django.utils import timezone
from .models import Log
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)
@csrf_exempt
@staticmethod
def api_token(request):
"""
Endpoint: api/token/
Patrón: 4 bloques con persistencia en Log DB.
"""
# --- BLOQUE 1: LOG INITIATION ---
logger.info("INICIO - Petición de JWT (api/token/)")
# Iniciamos el registro en la base de datos (Estándar compañeros)
log_entry = Log.objects.create(
user='anonimo',
path='api/token/',
method='POST',
createdAt=timezone.now(),
status_code='0'
)
try:
if request.method == 'POST':
# --- BLOQUE 2: DATA CLEANING ---
body_data = json.loads(request.body)
log_entry.request = body_data # Guardamos lo que entró
log_entry.save()
params = {
'username': body_data.get('username'),
'password': body_data.get('password')
}
# --- BLOQUE 3: ACTION CALL ---
admin_logic = Admin()
resultado = admin_logic.obtener_token_action(params)
# --- BLOQUE 4: LOG CLOSURE & RESPONSE ---
if resultado:
status = 200
log_entry.user = resultado['user']
log_entry.response = resultado
log_entry.status_code = str(status)
log_entry.updatedAt = timezone.now()
log_entry.save()
logger.info(f"FIN - JWT generado para: {log_entry.user}")
return JsonResponse(resultado, status=status)
else:
status = 401
response_error = {"error": "Credenciales inválidas"}
log_entry.status_code = str(status)
log_entry.response = response_error
log_entry.save()
return JsonResponse(response_error, status=status)
except Exception as e:
logger.error(f"ERROR CRÍTICO en api_token: {str(e)}")
log_entry.status_code = '500'
log_entry.response = {'error': str(e)}
log_entry.save()
return JsonResponse({'error': 'Error interno'}, status=500)