From fb7429ed4d49304fe9973769970f91394c0d041f Mon Sep 17 00:00:00 2001 From: Ronald Morales Date: Mon, 22 Apr 2024 22:52:27 -0400 Subject: [PATCH] Agrega Graficos --- project/api/views/linea.py | 67 +++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/project/api/views/linea.py b/project/api/views/linea.py index 710f2f4..40373e2 100755 --- a/project/api/views/linea.py +++ b/project/api/views/linea.py @@ -238,6 +238,9 @@ class LineaViewSet(viewsets.ModelViewSet): return JsonResponse(data, safe=False) + + + @action(detail=False, methods=['get']) def count_buses_recorridos_old(self, request, pk=None): query = "select count(distinct vehicle_license_plate) from gtfs_posiciones" @@ -249,6 +252,52 @@ class LineaViewSet(viewsets.ModelViewSet): return JsonResponse({ 'count': result[0] }) + @action(detail=False, methods=['get']) + def count_lineas_correctas(self, request, pk=None): + query = """ + SELECT 'Total Rutas correctas' AS titulo, COUNT(*) - ( + SELECT COUNT(*) AS cantidad + FROM gtfs_validaciones gv + WHERE id_gtfs IN ( + SELECT id_gtfs + FROM gtfs_archivo + WHERE NOT vigente + ) + ) AS cantidad + FROM linea + WHERE vigente + + UNION + + SELECT 'Total Rutas con Inconsistencias' AS titulo, COUNT(*) AS cantidad + FROM gtfs_validaciones gv + WHERE id_gtfs IN ( + SELECT id_gtfs + FROM gtfs_archivo + WHERE vigente + ) + """ + + try: + with connection.cursor() as cursor: + cursor.execute(query) + result = cursor.fetchall() + + data = [] + for row in result: + # Cada 'row' es una tupla con dos elementos: titulo y cantidad + data.append({ + 'titulo': row[0], + 'cantidad': row[1] + }) + + return JsonResponse(data, safe=False) # Usar safe=False para permitir objetos no diccionario en la raĆ­z + except Exception as e: + return JsonResponse({'error': str(e)}, status=400) + + + + @action(detail=False, methods=['get']) def count_buses_recorridos(self, request, pk=None): @@ -262,4 +311,20 @@ class LineaViewSet(viewsets.ModelViewSet): count_unique_vehicle_plates = len(unique_vehicle_plates) return JsonResponse({ 'count': count_unique_vehicle_plates }) - \ No newline at end of file + + @action(detail=False, methods=['get']) + def count_rutas_buses(self, request, pk=None): + + db_host = getenv('DB_REDIS_HOST') + db_port = getenv('DB_REDIS_PORT') + r = redis.Redis(host=db_host, port=db_port, decode_responses=True) + key = f'stop_id:none' + data = r.get(key) + data = json.loads(data) + unique_route_direction = set( + (item["route_id"], item["direction_id"]) for item in data + ) + count_unique_route_direction = len(unique_route_direction) + return JsonResponse({ 'count': count_unique_route_direction }) + + \ No newline at end of file