se procesa archivo gtfs
parent
e2b5e7aadd
commit
90d4d9d223
|
@ -7,7 +7,15 @@ ALTER TABLE linea_paradero drop CONSTRAINT IF EXISTS linea_paradero_id_linea_fke
|
|||
|
||||
-----
|
||||
|
||||
delete from gtfs_calendar ;
|
||||
ALTER TABLE gtfs_stop_times drop CONSTRAINT IF EXISTS fk_gtfs_sto_reference_gtfs_tri;
|
||||
|
||||
-----
|
||||
|
||||
ALTER TABLE gtfs_frequencie drop CONSTRAINT IF EXISTS fk_gtfs_fre_reference_gtfs_tri;
|
||||
|
||||
-----
|
||||
|
||||
DELETE FROM gtfs_calendar;
|
||||
|
||||
-----
|
||||
|
||||
|
@ -46,24 +54,22 @@ delete from linea_paradero;
|
|||
update linea
|
||||
set vigente = false
|
||||
where id_red in (select id_red from gtfs_archivo where trim(upper(status))='PROCESANDO' )
|
||||
and id_linea not in (select trim(zr.route_id)||'-'||trim(zt.direction_id::varchar)
|
||||
and id_linea not in (
|
||||
select trim(zr.route_id)||'-'||trim(zt.direction_id::varchar)
|
||||
from z_routes zr
|
||||
inner join z_trips zt
|
||||
on zr.route_id =zt.route_id
|
||||
|
||||
);
|
||||
inner join z_trips zt on zr.route_id =zt.route_id
|
||||
);
|
||||
|
||||
-----
|
||||
|
||||
update linea
|
||||
set vigente = true
|
||||
where id_red in (select id_red from gtfs_archivo where trim(upper(status))='PROCESANDO' )
|
||||
and id_linea in (select trim(zr.route_id)||'-'||trim(zt.direction_id::varchar)
|
||||
and id_linea in (
|
||||
select trim(zr.route_id)||'-'||trim(zt.direction_id::varchar)
|
||||
from z_routes zr
|
||||
inner join z_trips zt
|
||||
on zr.route_id =zt.route_id
|
||||
|
||||
);
|
||||
inner join z_trips zt on zr.route_id =zt.route_id
|
||||
);
|
||||
|
||||
-----
|
||||
|
||||
|
@ -128,7 +134,7 @@ order by 1;
|
|||
|
||||
-----
|
||||
|
||||
delete from gtfs_shape;
|
||||
truncate table gtfs_shape;
|
||||
|
||||
-----
|
||||
|
||||
|
@ -139,15 +145,15 @@ from z_shapes zs;
|
|||
|
||||
-----
|
||||
|
||||
delete from gtfs_stop_times;
|
||||
truncate table gtfs_stop_times;
|
||||
|
||||
-----
|
||||
|
||||
delete from gtfs_frequencie;
|
||||
truncate table gtfs_frequencie;
|
||||
|
||||
-----
|
||||
|
||||
delete from gtfs_trips;
|
||||
truncate table gtfs_trips;
|
||||
|
||||
-----
|
||||
|
||||
|
@ -156,7 +162,7 @@ select
|
|||
trip_id,
|
||||
trim(route_id)||'-'||trim(direction_id::varchar) as route_id,
|
||||
shape_id::numeric ,null as regreso, trip_headsign,trip_short_name,direction_id::numeric,service_id::varchar,block_id
|
||||
from z_trips zt ;
|
||||
from z_trips zt;
|
||||
|
||||
-----
|
||||
|
||||
|
@ -191,8 +197,12 @@ SET stop_name = REGEXP_REPLACE(
|
|||
);
|
||||
|
||||
-----
|
||||
update paradero
|
||||
set id_comuna = (select id_comuna from comuna_georeferencia as c where ST_Contains(c.geom, ST_SetSRID(ST_MakePoint(paradero.stop_lon, paradero.stop_lat), 4326)) limit 1);
|
||||
update paradero
|
||||
set id_comuna = (select id_comuna from comuna_georeferencia as c where ST_Contains(c.geom, ST_SetSRID(ST_MakePoint(paradero.stop_lon, paradero.stop_lat), 4326)) limit 1)
|
||||
where id_comuna is not null;
|
||||
-----
|
||||
|
||||
delete from rol_linea where id_linea not in (select id_linea from linea);
|
||||
|
||||
-----
|
||||
|
||||
|
@ -203,3 +213,11 @@ ALTER TABLE rol_linea ADD CONSTRAINT rol_linea_id_linea_fkey FOREIGN KEY (id_lin
|
|||
ALTER TABLE linea_paradero ADD CONSTRAINT linea_paradero_id_linea_fkey FOREIGN KEY (id_linea) REFERENCES linea(id_linea);
|
||||
|
||||
-----
|
||||
|
||||
ALTER TABLE gtfs_stop_times ADD CONSTRAINT fk_gtfs_sto_reference_gtfs_tri FOREIGN KEY (id_trip) REFERENCES gtfs_trips(id_trip) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
-----
|
||||
|
||||
ALTER TABLE gtfs_frequencie ADD CONSTRAINT fk_gtfs_fre_reference_gtfs_tri FOREIGN KEY (id_trip) REFERENCES gtfs_trips(id_trip) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
-----
|
|
@ -1,4 +1,5 @@
|
|||
from django.core.management.base import BaseCommand
|
||||
from django.utils import timezone
|
||||
from django.db import connection
|
||||
from api.models import GtfsArchivo, RedTransporte
|
||||
from decouple import config
|
||||
|
@ -7,6 +8,7 @@ import csv
|
|||
import zipfile
|
||||
import tempfile
|
||||
import threading
|
||||
import datetime
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Procesa los archivos gtfs en formato comprimido (zip)'
|
||||
|
@ -14,25 +16,31 @@ class Command(BaseCommand):
|
|||
def handle(self, *args, **options):
|
||||
# Lógica de tu comando aquí
|
||||
folder = config('GTFS_UPLOADS','/tmp')
|
||||
fecha_hoy = timezone.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
|
||||
redes = RedTransporte.objects.filter(vigente=True)
|
||||
for red in redes:
|
||||
print(f'nombre red: {red.nombre_red}')
|
||||
self.stdout.write(self.style.SUCCESS(f'nombre red: {red.nombre_red}'))
|
||||
|
||||
gtfs_archivo = GtfsArchivo.objects \
|
||||
.filter(vigente=False, id_red = red.id_red, status = 'PENDIENTE') \
|
||||
.order_by('-created').first()
|
||||
.filter(vigente=False, id_red = red.id_red, status = 'PENDIENTE', created__gte = fecha_hoy) \
|
||||
.order_by('-created') \
|
||||
.first()
|
||||
|
||||
if gtfs_archivo != None:
|
||||
gtfs_archivo.status = 'PROCESANDO'
|
||||
gtfs_archivo.save()
|
||||
|
||||
filepath = os.path.join(folder, gtfs_archivo.ruta_archivo)
|
||||
print(f'procesa: {filepath}')
|
||||
procesa_zip(filepath)
|
||||
|
||||
registro_anterior = GtfsArchivo.objects.filter(vigente=True, id_red = red.id_red)
|
||||
if registro_anterior:
|
||||
registro_anterior.vigente = False
|
||||
registro_anterior.save()
|
||||
|
||||
gtfs_archivo.status = 'PROCESADO'
|
||||
gtfs_archivo.status = 'GTFS CARGADO'
|
||||
gtfs_archivo.vigente = True
|
||||
gtfs_archivo.save()
|
||||
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
from rest_framework import viewsets
|
||||
# from rest_framework.response import Response
|
||||
from rest_framework.decorators import action, api_view
|
||||
from rest_framework.filters import OrderingFilter
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django.db import connection
|
||||
from .. import models, serializers
|
||||
from api import models, serializers
|
||||
from django.http import JsonResponse, HttpResponse
|
||||
from django.forms.models import model_to_dict
|
||||
from os import getenv
|
||||
|
@ -16,8 +17,9 @@ import logging
|
|||
class LineaViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Linea.objects.all()
|
||||
serializer_class = serializers.LineaSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filter_backends = [DjangoFilterBackend, OrderingFilter]
|
||||
filterset_fields = ['id_operador', 'route_short_name', 'route_long_name', 'vigente', 'rollinea__id_rol']
|
||||
ordering_fields = '__all__'
|
||||
|
||||
def list(self, request, pk=None, *args, **kwargs):
|
||||
login = request.jwt_info['login']
|
||||
|
|
|
@ -3,14 +3,16 @@ from rest_framework import viewsets
|
|||
from rest_framework.response import Response
|
||||
from rest_framework.decorators import action
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework.filters import OrderingFilter
|
||||
from rest_framework import status
|
||||
from .. import models, serializers
|
||||
from api import models, serializers
|
||||
|
||||
class OperadorViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Operador.objects.all()
|
||||
serializer_class = serializers.OperadorSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filter_backends = [DjangoFilterBackend, OrderingFilter]
|
||||
filterset_fields = ['id_region', 'nombre_operador', 'vigente']
|
||||
ordering_fields = '__all__'
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
# Comprueba si 'id_operador' está presente en la petición y no está vacío
|
||||
|
|
Loading…
Reference in New Issue