avance dashboard

francisco/photos
Francisco Sandoval 2023-12-09 21:14:04 -03:00
parent 3352f4bc61
commit c80988d3ee
3 changed files with 100 additions and 1 deletions

View File

@ -0,0 +1,28 @@
@server = http://localhost:4000/api
@token = {{login.response.body.$.token}}
###
# @name login
POST {{server}}/auth/
Content-Type: application/json
{
"username": "usuario1",
"password": "usuario1"
}
###
# @name count_lineas_vigentes
GET {{server}}/lineas/count
Authorization: Bearer {{token}}
###
# @name count_buses
GET {{server}}/lineas/count_buses
Authorization: Bearer {{token}}
###
# @name count_paraderos_vigentes
GET {{server}}/paraderos/count/?vigente=1
Authorization: Bearer {{token}}

View File

@ -76,7 +76,6 @@ class LineaViewSet(viewsets.ModelViewSet):
return JsonResponse(buses, safe=False) return JsonResponse(buses, safe=False)
@action(detail=False, methods=['get']) @action(detail=False, methods=['get'])
def buses_proto(self, request, pk=None): def buses_proto(self, request, pk=None):
pk = request.GET['id_linea'] pk = request.GET['id_linea']
@ -116,3 +115,57 @@ class LineaViewSet(viewsets.ModelViewSet):
detalle_buses.append(data_bus) detalle_buses.append(data_bus)
return JsonResponse(detalle_buses, safe=False) return JsonResponse(detalle_buses, safe=False)
@action(detail=False, methods=['get'])
def count(self, request, pk=None):
queryset = models.Linea.objects.all()
if 'vigente' in request.GET and request.GET['vigente'] == '1':
queryset = queryset.filter(vigente=True)
if 'vigente' in request.GET and request.GET['vigente'] == '0':
queryset = queryset.filter(vigente=False)
return JsonResponse({ 'count': queryset.count() })
@action(detail=False, methods=['get'])
def count_buses(self, request, pk=None):
query = "SELECT \
l.route_short_name, \
(select count(distinct vehicle_license_plate) \
from gtfs_posiciones as gp \
where (trim(gp.route_id)||'-'||trim(gp.direction_id::varchar)) = l.id_linea \
) as count \
from linea l \
where \
(select count(distinct vehicle_license_plate) from gtfs_posiciones as gp where \
(trim(gp.route_id)||'-'||trim(gp.direction_id::varchar)) = l.id_linea)>0"
with connection.cursor() as cursor:
cursor.execute(query)
result = cursor.fetchall()
data = []
for row in result:
data.append({
'route_short_name': row[0],
'count': row[1]
})
return JsonResponse(data, safe=False)
@action(detail=False, methods=['get'])
def count_buses_recorridos(self, request, pk=None):
query = "select count(distinct vehicle_license_plate) from gtfs_posiciones"
with connection.cursor() as cursor:
cursor.execute(query)
result = cursor.fetchone()
return JsonResponse({ 'count': result[0] })

View File

@ -1,5 +1,6 @@
from django.http import JsonResponse from django.http import JsonResponse
from rest_framework import viewsets from rest_framework import viewsets
from rest_framework.decorators import action
from api.serializers import ParaderoSerializer from api.serializers import ParaderoSerializer
from api.models import Paradero from api.models import Paradero
import logging import logging
@ -9,6 +10,23 @@ class ParaderoViewSet(viewsets.ModelViewSet):
serializer_class = ParaderoSerializer serializer_class = ParaderoSerializer
@action(detail=False, methods=['get'])
def count(self, request, pk=None):
queryset = Paradero.objects.all()
if 'vigente' in request.GET and request.GET['vigente'] == '1':
queryset = queryset.filter(vigente=True)
if 'vigente' in request.GET and request.GET['vigente'] == '0':
queryset = queryset.filter(vigente=False)
if 'id_comuna' in request.GET:
pass
return JsonResponse({ 'count': queryset.count() })
def info_public(request, pk): def info_public(request, pk):
if hasattr(request.META,'HTTP_REFERER'): if hasattr(request.META,'HTTP_REFERER'):