56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
from django.db import connection
|
|
from common.utils import clean_sql_string, clean_sql_int
|
|
|
|
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 = 1 if params.get('activo') else 0
|
|
|
|
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 Año-Día-Mes (Y-d-m)
|
|
import datetime
|
|
fecha_hoy = datetime.datetime.now().strftime('%Y-%d-%m')
|
|
|
|
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 |