def solicitud_reminder(time_limit=9999): """Busca las solicitudes que inician dentro de 1h y manda aviso. Si ya se asigno un operador, se comunica el nombre""" now = timezone.localtime(timezone.now()) notification_time = 'now' solicitudes = models.Solicitud.objects.filter( Q(status='agendado') & Q(cita__fecha__range=(now + datetime.timedelta(hours=1), now + datetime.timedelta(hours=1, minutes=10)))) for solicitud in solicitudes: if solicitud.vehiculo: vehiculo = solicitud.vehiculo.alias else: vehiculo = solicitud.placa msg = u'Recordatorio: Servicio de Verificación a Domicilio para el vehículo ' + vehiculo + ' dentro de 1 hora.' if solicitud.operador: msg = msg + ' El operador asignado es: ' + solicitud.operador.nombre solicitud.timestamp_proceso = timezone.now() solicitud.save() async_push.delay(deviceToken=solicitud.client.deviceToken, alert=msg, push_time='now', action='verifica.showValet', token=solicitud.solicitudToken.deviceToken) return len(solicitudes)
def purge_unpaid_solicitud(): """Busca las solicitudes que llevan mas de 2hrs sin pagar y les avisa que seran canceladas""" now = timezone.localtime(timezone.now()) pending_time = now + relativedelta(hours=-2) recibos = models.Recibo.objects.filter( Q(status='pendiente') & Q(timestamp__lte=pending_time)) for recibo in recibos: solicitud = recibo.solicitud solicitud.recibo = None solicitud.status = 'abierto' solicitud.save() if solicitud.vehiculo: vehiculo = solicitud.vehiculo.alias else: vehiculo = solicitud.placa recibo.delete() async_push.delay(deviceToken=solicitud.client.deviceToken, alert=u'Servicio de Valet para el auto ' + vehiculo + u' ha sido cancelado por falta de pago', push_time='now', action='verifica.showValet', token=solicitud.solicitudToken.deviceToken, sound=' ') return len(recibos)
def change_solicitud_status(time_limit=9999): """Busca las solicitudes que ya pasaron la hora agendada y les avisa que ya esta en proceso""" now = timezone.localtime(timezone.now()) notification_time = 'now' solicitudes = models.Solicitud.objects.filter( Q(status='agendado') & Q(cita__fecha__range=(now + relativedelta(minutes=-15), now + relativedelta(minutes=+2)))) for solicitud in solicitudes: solicitud.status = 'proceso' solicitud.timestamp_proceso = timezone.now() solicitud.save() if solicitud.vehiculo: vehiculo = solicitud.vehiculo.alias else: vehiculo = solicitud.placa async_push.delay(deviceToken=solicitud.client.deviceToken, alert=u'Servicio de Valet para el auto ' + vehiculo + u' en proceso.', push_time='now', action='verifica.showValet', token=solicitud.solicitudToken.deviceToken, sound=' ') return len(solicitudes)
def notify_unpaid_solicitud(): """Busca las solicitudes que llevan mas de 1hrs sin pagar y les recuerda que deben pagar""" now = timezone.localtime(timezone.now()) pending_time = now + relativedelta(hours=-1) recibos = models.Recibo.objects.filter( Q(status='pendiente') & Q(timestamp__lte=pending_time) & Q(notified=False)) for recibo in recibos: recibo.notified = True solicitud = recibo.solicitud if solicitud.vehiculo: vehiculo = solicitud.vehiculo.alias else: vehiculo = solicitud.placa recibo.save() async_push.delay( deviceToken=solicitud.client.deviceToken, alert=u'Realiza el pago del Servicio a Domicilio para el auto ' + vehiculo + u' para no perder tu cita', push_time='now', action='verifica.showValet', token=solicitud.solicitudToken.deviceToken, sound=' ') return len(recibos)