Merge branch 'merge/ronald' into 'master'
Merge/ronald See merge request m3f_usm/admin_transporte/backend!2francisco/photos
commit
a9721c6733
|
@ -405,3 +405,32 @@ class RolLinea(models.Model):
|
|||
managed = True
|
||||
db_table = 'rol_linea'
|
||||
unique_together = (('id_rol', 'id_linea'),)
|
||||
|
||||
class RedTransporte(models.Model):
|
||||
id_red = models.CharField(primary_key=True, max_length=10)
|
||||
nombre_red = models.CharField(max_length=100, blank=True, null=True)
|
||||
descripcion = models.CharField(max_length=1000, blank=True, null=True)
|
||||
url_gtfs_rt = models.CharField(max_length=100, blank=True, null=True)
|
||||
api_key = models.CharField(max_length=100, blank=True, null=True)
|
||||
vigente = models.BooleanField(blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
managed = False
|
||||
db_table = 'red_transporte'
|
||||
db_table_comment = 'Tabla que contiene las diferentes tipos de red de transporte, como son los de transporte publico, trenes, colectivos, etc.'
|
||||
|
||||
class GtfsArchivo(models.Model):
|
||||
id_gtfs = models.AutoField(primary_key=True)
|
||||
id_red = models.ForeignKey('RedTransporte', models.DO_NOTHING, db_column='id_red', blank=True, null=True)
|
||||
archivo = models.CharField(max_length=200, blank=True, null=True)
|
||||
ruta_archivo = models.CharField(max_length=200, blank=True, null=True)
|
||||
valid_from = models.DateField(blank=True, null=True)
|
||||
created = models.DateTimeField(blank=True, null=True)
|
||||
usuario = models.CharField(max_length=100, blank=True, null=True)
|
||||
vigente = models.BooleanField(blank=True, null=True)
|
||||
status = models.CharField(max_length=100, blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
managed = False
|
||||
db_table = 'gtfs_archivo'
|
||||
db_table_comment = 'Registro de los archivos GTFS que se cargan en el sistema'
|
||||
|
|
|
@ -138,4 +138,14 @@ class RolLineaSerializer(serializers.ModelSerializer):
|
|||
class LetreroLUR_Serializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = models.LetreroLUR
|
||||
fields = '__all__'
|
||||
|
||||
class RedTransporteSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = models.RedTransporte
|
||||
fields = '__all__'
|
||||
|
||||
class GtfsArchivoSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = models.GtfsArchivo
|
||||
fields = '__all__'
|
|
@ -2,7 +2,7 @@ from django.urls import path, include
|
|||
from rest_framework import routers
|
||||
# from api import views
|
||||
from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region, rol, rolaplicacion
|
||||
from api.views import mapa, linea, letrero_lur, operador
|
||||
from api.views import mapa, linea, letrero_lur, operador,red_transporte,gtfs_archivo
|
||||
from api.views import paradero, paradero_imagen, linea_paradero
|
||||
from api.views import dispositivo
|
||||
from api.views import rol_linea
|
||||
|
@ -26,6 +26,8 @@ router.register('lineas', linea.LineaViewSet)
|
|||
router.register('lineas-paradero', linea_paradero.LineaParaderoViewSet)
|
||||
router.register('letreros-lur', letrero_lur.LetreroLUR_ViewSet)
|
||||
router.register('operadores', operador.OperadorViewSet)
|
||||
router.register('red-transporte', red_transporte.RedTransporteViewSet)
|
||||
router.register('gtfs-archivo', gtfs_archivo.GtfsArchivoViewSet)
|
||||
router.register('roles', rol.RolViewSet)
|
||||
router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='rol_aplicacion')
|
||||
router.register('roles-lineas', rol_linea.RolLineaViewSet, basename='rol_linea')
|
||||
|
|
|
@ -6,7 +6,7 @@ ALTER TABLE rol_linea drop CONSTRAINT IF EXISTS rol_linea_id_linea_fkey;
|
|||
ALTER TABLE linea_paradero drop CONSTRAINT IF EXISTS linea_paradero_id_linea_fkey;
|
||||
|
||||
-----
|
||||
|
||||
/*
|
||||
update operador
|
||||
set vigente =false
|
||||
where id_operador not in (select agency_id from z_agency za);
|
||||
|
@ -26,7 +26,7 @@ from z_agency za
|
|||
where agency_id not in (select id_operador from operador za);
|
||||
|
||||
-----
|
||||
|
||||
*/
|
||||
delete from gtfs_calendar ;
|
||||
|
||||
-----
|
||||
|
@ -36,11 +36,11 @@ select service_id, monday::bool , tuesday::bool , wednesday::bool , thursday::bo
|
|||
from z_calendar zc;
|
||||
|
||||
-----
|
||||
|
||||
/*
|
||||
update paradero p
|
||||
set vigente = false
|
||||
where id_paradero::text not in (select stop_id from z_stops );
|
||||
|
||||
*/
|
||||
-----
|
||||
|
||||
update paradero
|
||||
|
@ -69,55 +69,92 @@ delete from linea_paradero;
|
|||
|
||||
-----
|
||||
|
||||
delete from linea ;
|
||||
/*delete from linea*/ ;
|
||||
|
||||
-----
|
||||
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)
|
||||
from z_routes zr
|
||||
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)
|
||||
from z_routes zr
|
||||
inner join z_trips zt
|
||||
on zr.route_id =zt.route_id
|
||||
|
||||
);
|
||||
|
||||
/*
|
||||
update linea
|
||||
route_short_name = (select substring(zt.trip_headsign FROM '(\S+) -') as route_short_name )
|
||||
route_desc =
|
||||
route_type =
|
||||
route_url
|
||||
route_color
|
||||
route_text_color
|
||||
route_long_name
|
||||
vigente
|
||||
id_red = (select id_red from gtfs_archivo where trim(upper(status))='PROCESANDO' limit 1)
|
||||
id_linea
|
||||
*/
|
||||
|
||||
insert into linea
|
||||
select distinct
|
||||
trim(zr.route_id)||'-'||trim(zt.direction_id::varchar) as route_id,
|
||||
zr.agency_id ,
|
||||
null,--zr.agency_id ,
|
||||
substring(zt.trip_headsign FROM '(\S+) -') as route_short_name ,
|
||||
zr.route_desc ,
|
||||
zr.route_type::numeric ,
|
||||
zr.route_url,
|
||||
zr.route_color ,
|
||||
zr.route_text_color ,
|
||||
zt.trip_headsign as route_long_name , true
|
||||
zt.trip_headsign as route_long_name , true ,
|
||||
(select id_red from gtfs_archivo where trim(upper(status))='PROCESANDO' limit 1) as id_red
|
||||
from z_routes zr
|
||||
inner join z_trips zt
|
||||
on zr.route_id =zt.route_id
|
||||
and replace (zt.trip_headsign,' ','') =replace ((SPLIT_PART(route_long_name, '-', 1)||'-'||SPLIT_PART(route_long_name, '-', 2)),' ','')
|
||||
where route_long_name not like '%'||route_short_name ||'%'
|
||||
and (trim(zr.route_id)||'-'||trim(zt.direction_id::varchar) ) not in (select id_linea from linea )
|
||||
union
|
||||
select distinct
|
||||
trim(zr.route_id)||'-'||trim(zt.direction_id::varchar) as route_id,
|
||||
zr.agency_id ,
|
||||
null,--zr.agency_id ,
|
||||
substring(zt.trip_headsign FROM '(\S+) -') as route_short_name ,
|
||||
zr.route_desc ,
|
||||
zr.route_type::numeric ,
|
||||
zr.route_url,
|
||||
zr.route_color ,
|
||||
zr.route_text_color ,
|
||||
zt.trip_headsign as route_long_name , true
|
||||
zt.trip_headsign as route_long_name , true ,
|
||||
(select id_red from gtfs_archivo where trim(upper(status))='PROCESANDO' limit 1) as id_red
|
||||
from z_routes zr
|
||||
inner join z_trips zt
|
||||
on zr.route_id =zt.route_id
|
||||
and replace (zt.trip_headsign,' ','') =replace ((SPLIT_PART(route_long_name, '-', 3)||'-'||SPLIT_PART(route_long_name, '-', 4)),' ','')
|
||||
where route_long_name not like '%'||route_short_name ||'%'
|
||||
|
||||
and (trim(zr.route_id)||'-'||trim(zt.direction_id::varchar) ) not in (select id_linea from linea )
|
||||
union
|
||||
|
||||
select distinct
|
||||
trim(zr.route_id)||'-'||trim(zt.direction_id::varchar) as route_id,
|
||||
zr.agency_id ,
|
||||
null,--zr.agency_id ,
|
||||
route_short_name ,
|
||||
zr.route_desc ,
|
||||
zr.route_type::numeric ,
|
||||
zr.route_url,
|
||||
zr.route_color ,
|
||||
zr.route_text_color ,
|
||||
zt.trip_headsign as route_long_name , true
|
||||
zt.trip_headsign as route_long_name , true ,
|
||||
(select id_red from gtfs_archivo where trim(upper(status))='PROCESANDO' limit 1) as id_red
|
||||
from z_routes zr
|
||||
inner join z_trips zt
|
||||
on zr.route_id =zt.route_id
|
||||
|
@ -126,6 +163,7 @@ select distinct
|
|||
or
|
||||
route_long_name like '%'||route_short_name ||'%'
|
||||
)
|
||||
where (trim(zr.route_id)||'-'||trim(zt.direction_id::varchar) ) not in (select id_linea from linea )
|
||||
order by 1;
|
||||
|
||||
-----
|
||||
|
@ -192,6 +230,10 @@ SET stop_name = REGEXP_REPLACE(
|
|||
'gi'
|
||||
);
|
||||
|
||||
-----
|
||||
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);
|
||||
|
||||
-----
|
||||
|
||||
ALTER TABLE rol_linea ADD CONSTRAINT rol_linea_id_linea_fkey FOREIGN KEY (id_linea) REFERENCES linea(id_linea);
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
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 import status
|
||||
from .. import models , serializers
|
||||
from django.db import models as dj_models
|
||||
|
||||
class GtfsArchivoViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.GtfsArchivo.objects.all()
|
||||
serializer_class = serializers.GtfsArchivoSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = ['id_gtfs', 'id_red', 'archivo','valida_from','created','usuario','vigente','status']
|
||||
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
# se indica que si no se indico el id, entonces sea el maximo + 1
|
||||
if not request.data.get('id_gtfs', None):
|
||||
max_id = models.GtfsArchivo.objects.aggregate(dj_models.Max('id_gtfs'))['id_gtfs__max']
|
||||
new_id = max_id + 1 if max_id is not None else 1
|
||||
request.data['id_gtfs'] = new_id
|
||||
|
||||
return super().create(request, *args, **kwargs)
|
|
@ -3,6 +3,7 @@ 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 import status
|
||||
from .. import models, serializers
|
||||
|
||||
class OperadorViewSet(viewsets.ModelViewSet):
|
||||
|
@ -10,3 +11,16 @@ class OperadorViewSet(viewsets.ModelViewSet):
|
|||
serializer_class = serializers.OperadorSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = ['id_region', 'nombre_operador', 'vigente']
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
# Comprueba si 'id_operador' está presente en la petición y no está vacío
|
||||
id_operador = request.data.get('id_operador')
|
||||
if not id_operador:
|
||||
# Si 'id_operador' no está presente o está vacío, retorna un error 400
|
||||
return Response(
|
||||
{"error": "No se puede crear el operador: 'id_operador' no proporcionado."},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
# Si 'id_operador' está presente, procede con la creación normal
|
||||
return super().create(request, *args, **kwargs)
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
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 import status
|
||||
from .. import models , serializers
|
||||
from django.db import models as dj_models
|
||||
|
||||
class RedTransporteViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.RedTransporte.objects.all()
|
||||
serializer_class = serializers.RedTransporteSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = ['id_red', 'nombre_red', 'descripcion','vigente']
|
||||
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
# se indica que si no se indico el id, entonces sea el maximo + 1
|
||||
if not request.data.get('id_red', None):
|
||||
max_id = models.RedTransporte.objects.aggregate(dj_models.Max('id_red'))['id_red__max']
|
||||
new_id = max_id + 1 if max_id is not None else 1
|
||||
request.data['id_red'] = new_id
|
||||
|
||||
return super().create(request, *args, **kwargs)
|
Loading…
Reference in New Issue