diff --git a/project/api/management/commands/actualiza_GTFS.sql b/project/api/management/commands/actualiza_GTFS.sql index 193571c..79a49f0 100644 --- a/project/api/management/commands/actualiza_GTFS.sql +++ b/project/api/management/commands/actualiza_GTFS.sql @@ -79,11 +79,13 @@ BEGIN ) INTO inicio_vigencia;*/ SELECT MIN(start_date) INTO inicio_vigencia FROM z_calendar; - + update gtfs_archivo + set valid_from= inicio_vigencia + where trim(upper(status))='PROCESANDO' ; IF CURRENT_DATE < inicio_vigencia THEN update gtfs_archivo - set status = 'PENDIENTE' , valid_from= inicio_vigencia + set status = 'PENDIENTE' where trim(upper(status))='PROCESANDO' ; v_error:= '9 EL ARCHIVO AUN NO ESTA VIGENTE POR FECHA'; END IF; diff --git a/project/api/management/commands/procesa_zip.py b/project/api/management/commands/procesa_zip.py index 4428958..4353e75 100644 --- a/project/api/management/commands/procesa_zip.py +++ b/project/api/management/commands/procesa_zip.py @@ -13,7 +13,7 @@ class Command(BaseCommand): help = 'Procesa los archivos gtfs en formato comprimido (zip)' def handle(self, *args, **options): - # Lógica de tu comando aquí + folder = config('GTFS_UPLOADS','/tmp') redes = RedTransporte.objects.filter(vigente=True) diff --git a/project/api/models.py b/project/api/models.py index 57dda27..8f9dabc 100755 --- a/project/api/models.py +++ b/project/api/models.py @@ -425,7 +425,8 @@ class GtfsArchivo(models.Model): 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) + #created = models.DateTimeField(blank=True, null=True) + created = models.DateTimeField(auto_now_add=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) diff --git a/project/api/urls.py b/project/api/urls.py index 93c859e..9431201 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -25,7 +25,7 @@ router.register('paraderos-image', paradero_imagen.ParaderoImagenListView, basen 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, basename='operadores') +router.register('operadores', operador.OperadorViewSet, basename='operadores') router.register('red-transporte', red_transporte.RedTransporteViewSet) router.register('gtfs-archivo', gtfs_archivo.GtfsArchivoViewSet) router.register('roles', rol.RolViewSet) @@ -41,5 +41,6 @@ urlpatterns = [ path('auth/nueva-contrasena/', auth.nueva_contrasena, name='auth_contrasena'), path('mapas/paraderos/', mapa.paraderos, name='mapa-paraderos'), path('mapas/rutas/', mapa.rutas, name='mapa-rutas'), + path('mapas/coordenadas/', mapa.coordenadas, name='mapa-coordenadas'), path('upload/zip/', upload.upload_zip, name='upload_zip'), ] diff --git a/project/api/views/gtfs_archivo.py b/project/api/views/gtfs_archivo.py index 6d9f3c1..576891a 100644 --- a/project/api/views/gtfs_archivo.py +++ b/project/api/views/gtfs_archivo.py @@ -2,19 +2,24 @@ from rest_framework import viewsets from rest_framework.decorators import action from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.filters import OrderingFilter from django.core.files.storage import FileSystemStorage from django.http import FileResponse, HttpResponse from api import models , serializers from decouple import config + + + import os import logging class GtfsArchivoViewSet(viewsets.ModelViewSet): queryset = models.GtfsArchivo.objects.all() serializer_class = serializers.GtfsArchivoSerializer - filter_backends = [DjangoFilterBackend] + filter_backends = [DjangoFilterBackend, OrderingFilter] filterset_fields = ['id_gtfs', 'id_red', 'archivo','valid_from','created','usuario','vigente','status'] - + ordering_fields = ['id_gtfs', 'id_red', 'archivo', 'valid_from', 'created', 'usuario', 'vigente', 'status'] + ordering = ['id_gtfs'] def create(self, request, *args, **kwargs): fs = FileSystemStorage(location = config('GTFS_UPLOADS','/tmp')) diff --git a/project/api/views/mapa.py b/project/api/views/mapa.py index ad68f92..1fe16f8 100755 --- a/project/api/views/mapa.py +++ b/project/api/views/mapa.py @@ -6,10 +6,12 @@ from django.views.decorators.csrf import csrf_exempt from api.models import Paradero from api.models import GtfsShape, GtfsTrips from logging import error +from decouple import config google_api_key = 'AIzaSyDnFO9w_SsodjBuY5tOK8-kQJns_l5klQ4' center = {'lat': -36.8077884, 'lng': -73.0775401} + @csrf_exempt @action(detail=False, methods=['get']) @api_view(['GET']) @@ -86,4 +88,19 @@ def rutas(request): return JsonResponse({ 'google_api_key': google_api_key, 'positions': list(resultados) + }) + + +@action(detail=False, methods=['get']) +@api_view(['GET']) + +def coordenadas(request): + # Obtener las coordenadas iniciales desde las variables de entorno + initial_lat = config('COORDINI_LAT', default=-36.8270) + initial_lng = config('COORDINI_LNG', default=-73.0503) + + # Enviar las coordenadas iniciales como parte de la respuesta + return JsonResponse({ + 'initialLat': initial_lat, + 'initialLng': initial_lng, }) \ No newline at end of file diff --git a/project/api/views/operador.py b/project/api/views/operador.py index a87d6f0..33c9153 100755 --- a/project/api/views/operador.py +++ b/project/api/views/operador.py @@ -8,6 +8,7 @@ from django.db.models import Max from django.db import transaction from api import models, serializers import logging +from decouple import config class OperadorViewSet(viewsets.ModelViewSet): # queryset = models.Operador.objects.all() @@ -62,30 +63,25 @@ class OperadorViewSet(viewsets.ModelViewSet): #Grabamos Operador, ya que si corresponde se le asigno el id del nuevo Rol operador.save() - + if newRecord : - aplicacion = models.Aplicacion.objects.get(id_aplicacion=1) - rolApp = models.RolAplicacion( - id_rol=rol, - id_aplicacion =aplicacion - ) - rolApp.save() - aplicacion = models.Aplicacion.objects.get(id_aplicacion=2) - rolApp = models.RolAplicacion( - id_rol=rol, - id_aplicacion = aplicacion - ) - rolApp.save() + app_default_operador_str = config('APP_DEFAULT_OPERADOR') + app_default_operador = [int(x) for x in app_default_operador_str.split(',')] + + for id_aplicacion in app_default_operador: + aplicacion = models.Aplicacion.objects.get(id_aplicacion=id_aplicacion) + rolApp = models.RolAplicacion( + id_rol=rol, + id_aplicacion=aplicacion + ) + rolApp.save() rol_operador = models.RolOperador( id_rol = rol, id_operador = operador ) rol_operador.save() - newRecord =False - - - + newRecord =False return Response({ 'id_operador': operador.id_operador,