Esempio n. 1
0
def track_shipment_display(request):
    try:
        lr_obj = LrNumber.objects.get(lr_number__iexact=request.GET.get('shipment_id'))
        booking_unloaded = check_booking_status(lr_obj.booking, 'unloaded')
        if lr_obj.booking.pod_status == 'completed' or booking_unloaded:
            messages.info(request, 'This shipment has been delivered at the unloading point.')
            return render(request=request, template_name='index/track_shipment.html',
                          context={'booking': lr_obj.booking, 'lr_obj': lr_obj})
        else:
            gps = shipment_gps_data(booking=lr_obj.booking)
            if gps:
                # if gps['location_time'] > datetime.utcnow() - timedelta(hours=24):
                if gps['location_time'].replace(tzinfo=None) > datetime.utcnow() - timedelta(hours=24):
                    gps_data = google_reverse_geocode(gps['latitude'], gps['longitude'])
                    gps_data['driver_name'] = gps['driver_name']
                    gps_data['driver_number'] = gps['driver_number']
                    gps_data['updated_on'] = gps['location_time']
                    gps_data['vehicle_number'] = display_format(gps['vehicle_number'])
                    context = {'lr_obj': lr_obj, 'gps': gps_data}
                    print(context)
                    return render(request=request, template_name='index/track_shipment.html', context=context)
                else:
                    messages.info(request,
                                  'We apologize but location data for this shipment is not available as of now.')
                    return render(request=request, template_name='index/track_shipment.html',
                                  context={'booking': lr_obj.booking, 'lr_obj': lr_obj})
            else:
                messages.info(request, 'We apologize but location data for this shipment is not available as of now.')
                return render(request=request, template_name='index/track_shipment.html',
                              context={'booking': lr_obj.booking, 'lr_obj': lr_obj})
    except LrNumber.DoesNotExist:
        messages.error(request, 'Incorrect LR, please check and try again.')
        return render(request=request, template_name='index/index-gloify.html')
Esempio n. 2
0
def update_booking_status_mapping_location(gps_device):
    from restapi.models import BookingStatusesMapping, BookingStatusesMappingLocation
    from restapi.serializers.task_dashboard import BookingStatusesMappingLocationSerializer
    if gps_device:
        booking = gps_device.vehicle.manualbooking_set.exclude(booking_status='cancelled').order_by('id').last()
        if isinstance(booking, ManualBooking):
            bsm = BookingStatusesMapping.objects.filter(manual_booking=booking).order_by('-id')[:1]
            if bsm:
                reverse_geocode = google_reverse_geocode(gps_device.latitude, gps_device.longitude)
                data = {
                    'booking_status_mapping_id': bsm[0].id,
                    'city': reverse_geocode['district'],
                    'district': reverse_geocode['district'],
                    'state': reverse_geocode['state'],
                    'latitude': reverse_geocode['latitude'],
                    'longitude': reverse_geocode['longitude'],
                    'country': 'India'
                }
                booking_statuses_mapping_location_serializer = BookingStatusesMappingLocationSerializer(data=data)
                if booking_statuses_mapping_location_serializer.is_valid():
                    bsmls = booking_statuses_mapping_location_serializer.save()
                    BookingStatusesMappingLocation.objects.filter(id=bsmls.id).update(created_on=gps_device.location_time)
                else:
                    print('GPS Location update did not work '+ str(booking_statuses_mapping_location_serializer.errors))
            else:
                print('BookingStatusesMapping Not found for vehicle:' + gps_device.vehicle.vehicle_number)
Esempio n. 3
0
 def location(self):
     if self.longitude is None or self.latitude is None:
         return None
     from api.models import google_reverse_geocode
     geo_data = google_reverse_geocode(self.latitude, self.longitude)
     data = {
         'name': geo_data['name'],
         'district': geo_data['district'],
         'state': geo_data['state'],
         'country': geo_data['country'],
         'latitude': float(self.latitude),
         'longitude': float(self.longitude),
         'time': format_date(self.datetime or timezone.now())
     }
     return data