Files
django-core-base/apps/promociones/actions.py
juanjo e5908b1880
All checks were successful
DEPLOY_MULTI_BRACH/pipeline/head This commit looks good
endpoint de status
2026-04-12 22:38:49 +02:00

64 lines
1.9 KiB
Python

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.
"""
# 1. Definimos la query con placeholders (%s)
query = """
SELECT id, nombre, fecha_inicio, descripcion
FROM promociones
WHERE id = %s AND activo = %s
"""
# 2. Preparamos el diccionario de parámetros (tu estándar get_parameterized)
# Limpiamos los datos antes de enviarlos a la base de datos
id_promocion = clean_sql_int(params.get('id'))
is_active = True if params.get('activo') else False
parameter_dict = [id_promocion, is_active]
# 3. Ejecución parametrizada
with connection.cursor() as cursor:
cursor.execute(query, parameter_dict)
columns = [col[0] for col in cursor.description]
result = [dict(zip(columns, row)) for row in cursor.fetchall()]
return result
def setData(params):
"""
Función estándar para insertar o actualizar (set_parameterized).
"""
# Ejemplo de UPDATE con JOIN (como solicitaste en tu estándar)
query = """
UPDATE promociones p
SET p.nombre = %s, p.fecha_modificacion = %s
FROM categorias c
WHERE p.categoria_id = c.id AND p.id = %s
"""
# Fecha en formato YYYY-MM-DD para SQL
import datetime
fecha_hoy = datetime.datetime.now().strftime('%Y-%m-%d')
parameter_dict = [
clean_sql_string(params.get('nombre')),
fecha_hoy,
clean_sql_int(params.get('id'))
]
with connection.cursor() as cursor:
cursor.execute(query, parameter_dict)
affected_rows = cursor.rowcount
return affected_rows