Coverage for travels\management\commands\finish_travels.py: 89.5%

17 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-08-30 20:58 +0200

1import logging 

2 

3from django.core.management.base import BaseCommand 

4from django.utils import timezone 

5 

6from travels.services.travel_service import TravelService 

7 

8logger = logging.getLogger(__name__) 

9 

10 

11# Comando para finalizar los viajes tras 2 horas despues de su fecha de finalizacion 

12class Command(BaseCommand): 

13 help = 'Pasa a estado finalizado los viajes activos cuya fecha supero las 2 horas tras la fecha de finalizacion.' 

14 

15 def handle(self, *args, **kwargs): 

16 now = timezone.now() 

17 

18 try: 

19 # La regla vive en el servicio, este comando solo la dispara 

20 finished_count, unvalidated_count = TravelService.finish_expired_travels(now) 

21 

22 if not finished_count: 

23 logger.info(f'[{now}] No expired travels found.') 

24 return 

25 

26 logger.info( 

27 f'Success: {finished_count} travels finished, ' 

28 f'{unvalidated_count} passengers marked as unvalidated.' 

29 ) 

30 except Exception as e: 

31 logger.error(f'Error finishing travels, command finish_travels: {str(e)}')