diff --git a/cosiap_api/dynamic_tables/views.py b/cosiap_api/dynamic_tables/views.py index 2dbd55ac8545c7388b320fa3e094bc4b1d513f46..017b985b811ba29a18e4b3a22cac18ef2c892e3b 100644 --- a/cosiap_api/dynamic_tables/views.py +++ b/cosiap_api/dynamic_tables/views.py @@ -394,12 +394,48 @@ class Exportar_CSV(BasePermissionAPIView): Método get para obtener el archivo zip con todos los documentos solicitados. ''' configuracion = self.get_configuracion_reporte(request) - print(configuracion.filters) - print(configuracion.model_name) - print(configuracion.columns) + configuracion.columns = self.format_columns(configuracion.columns) + configuracion.filters = self.format_filters(configuracion.filters) reporte = DynamicTableDynamicForm(instance=configuracion, model_class=self.model_class) - print('Reporte', reporte) data = reporte.get_data(configuracion) - print(data) response = reporte.export_to_csv_and_zip(data) - return response \ No newline at end of file + return response + + + @staticmethod + def format_columns(columns_dict): + """ + Convierte un diccionario de columnas en una lista de claves. + + Args: + columns_dict (dict): Diccionario de columnas en formato {"campo": "label"}. + + Returns: + list: Lista de claves de columnas en el formato ['campo', ...]. + """ + return list(columns_dict.keys()) + + @staticmethod + def format_filters(filters_list): + """ + Convierte una lista de filtros con `campo`, `lookups` y valores a un diccionario simplificado. + + Args: + filters_list (list): Lista de filtros en formato detallado. + + Returns: + dict: Diccionario con formato {'campo': {'lookup': [valor]}}. + """ + filters_dict = {} + for filter_item in filters_list: + field_name = filter_item.get('campo') + lookups = filter_item.get('lookups', {}) + for lookup, value in lookups.items(): + # Omitir si el valor es None o 'null' + if value is None or value == 'null': + continue + if field_name not in filters_dict: + filters_dict[field_name] = {} + # Asegurarse de que 'value' sea una lista + filters_dict[field_name][lookup] = value if isinstance(value, list) else [value] + return filters_dict diff --git a/cosiap_api/temp_export/reporte.csv b/cosiap_api/temp_export/reporte.csv deleted file mode 100644 index f3941def5695bf1362732862d5ec9d24db9e3094..0000000000000000000000000000000000000000 --- a/cosiap_api/temp_export/reporte.csv +++ /dev/null @@ -1,3 +0,0 @@ -status,monto_solicitado,monto_aprobado,solicitante__nombre,solicitante__curp,solicitante__email -Aprobado,10000.0,8000.0,Elliot,NOXE020729HNERXLA3,elliotnoriega@gmail.com -Pendiente,10000.0,9000.0,Elliot,NOXE020729HNERXLA3,elliotnoriega@gmail.com diff --git a/cosiap_frontend/src/components/SolicitudesAdmin/Solicitudes.jsx b/cosiap_frontend/src/components/SolicitudesAdmin/Solicitudes.jsx index 454570fa7a28f1870dedbdbd5dccf598f012793b..be3654df29be90d5aaaad689457f4a85a99f097e 100644 --- a/cosiap_frontend/src/components/SolicitudesAdmin/Solicitudes.jsx +++ b/cosiap_frontend/src/components/SolicitudesAdmin/Solicitudes.jsx @@ -358,7 +358,7 @@ export default function Solicitudes( {setViewPageLoader} ){ } }); // Aplicamos el término de búsqueda a todos los campos de cada solicitud - if (searchTerm !== '') { + if (searchTerm !== '' && searchTerm !==null) { solicitudesFiltradas = solicitudesFiltradas.filter(solicitud => { return Object.values(solicitud).some(value => value?.toString().toLowerCase().includes(searchTerm.toLowerCase())