Exemple #1
0
def generateAlertsContext(request):
    user = request.user
    user_alerts = Alert.objects.filter(car__owner = user)
    
    if request.method == 'POST': # If the form has been submitted...
        if request.POST.get('alertCheckBox',False):
            chkbxs = request.POST.getlist('alertCheckBox')
            for x in chkbxs:
                alertLog = AlertLog.objects.get(id = int(x))
                alertLog.marked_as_read = True
                alertLog.save()

    groups = []
    for user_alert in user_alerts:
        alerts_logs = AlertLog.objects.filter(alert = user_alert).filter(marked_as_read = False).order_by('location_log__timestamp')
        group = []
        for alert_log in alerts_logs:
            if alert_log.notification_sent and group:
                groups.append(group)
                group = []
            group.append(alert_log)
        if group:
            groups.append(group)    
            
    groups = sorted(groups, key=lambda group: str(group[0].location_log.driver))
    
    context = {
        'menuParams' : utils.initMenuParameters(user),
        'user' : user,
        'map_center_lat' : '32.047818',
        'map_center_long' : '34.761265',
        'alertsArrays':groups,
        'activeMenu' : 'alerts',
    }
    return context
Exemple #2
0
def carHistory(request, car_id, fromDate=None, toDate=None):
    user = request.user
    user_id = user.id
    car = Car.objects.filter(owner_id=user_id).filter(id=car_id)
    if not car:
        return HttpResponseRedirect('/')

    fromDateStr = utils.formatDateStr(fromDate)
    toDateStr = utils.formatDateStr(toDate, zeroHour=False)
        
    list_of_locations = LocationLog.objects.filter(car=car).filter(timestamp__range=[fromDateStr,toDateStr]).order_by('-timestamp')
    

    context = {
        'menuParams' : utils.initMenuParameters(user),
        'fromDateStr' : fromDateStr[:-9], # [:-9] truncates the hour
        'toDateStr' : toDateStr[:-9],
        'route_details':utils.RouteDetails(list_of_locations),
        'user' : user,
        'car': car[0],
        'primary_driver' : car[0].getPrimaryDriversByDateRange(fromDateStr,toDateStr),
        'temporary_drivers' : car[0].getTemporaryDriversByDateRange(fromDateStr,toDateStr),
        'map_center_lat' : '32.047818',
        'map_center_long' : '34.761265',
        'activeMenu' : 'cars',
    }

    return render(request, 'carHistory/carHistory.html', context)         
Exemple #3
0
def schedule(request):
    user = request.user
    user_id = user.id
    context = {
        'menuParams' : utils.initMenuParameters(user),
        'days':[['Sunday','01'],['Monday','02'], ['Tuesday','03'],['Wednesday','04'], ['Thursday','05'],['Friday','06'],['Saturday','07']],
        'hours':['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23'],
        'user' : user,
        'carsDrivers' : utils.userCarDriverSchedule(user),
        'userScheduleProfiles' : AlertScheduleProfile.objects.filter(owner=user),
        'activeMenu' : 'schedule',
    }
    return render(request, 'schedule/schedule.html', context)
Exemple #4
0
def fuel(request):
    user = request.user
    if request.method == 'POST': # If the form has been submitted...
        form = FuelConsupmtionForm(request.POST) # A form bound to the POST data
        #if form.is_valid(): # All validation rules pass
        # Process the data in form.cleaned_data
        fuel_utils.handle_usage_file(request.FILES["data_file"])

        return HttpResponseRedirect('/fuel') # Redirect after POST
    else:
        form = FuelConsupmtionForm() # An unbound form

    return render(request, 'fuel.html', {'form': form,
                                         'menuParams' : utils.initMenuParameters(user),
                                         'activeMenu' : 'fuel',})
Exemple #5
0
def perimeter(request):
    user = request.user
    user_id = user.id
	
    context = {
        'menuParams' : utils.initMenuParameters(user),
        'user' : user,
        #'carsDrivers' : utils.userCarDrivers(user),
        'carsDrivers' : utils.userCarDriverArea(user),
        'areaCircles' : utils.userAreaCircles(user),
        'map_center_lat': '32.047818',
        'map_center_long': '34.761265',
        'userScheduleProfiles' : AlertScheduleProfile.objects.filter(owner=user),
        'activeMenu' : 'perimeter',
        }
    return render(request, 'perimeter/perimeter.html', context)
Exemple #6
0
def mainView(request):
    user = request.user
    user_id = user.id
    cars = Car.objects.filter(owner_id=user_id).filter(is_active=True)
    list_of_locations = []
    for car in cars:
        try:
            last_location = LocationLog.objects.filter(car=car).latest('timestamp')
        except LocationLog.DoesNotExist:
            pass
        else:
            list_of_locations.append(last_location)

    context = {
        'menuParams' : utils.initMenuParameters(user),
        'list_of_locations': list_of_locations,
        'user' : user,
        'map_center_lat': '32.047818',
        'map_center_long': '34.761265',
    }
    return render(request, 'mainView/mainView.html', context)
Exemple #7
0
def generateDriverContext(user, driver_id, fromDate=None, toDate=None):
    user_id = user.id
    driver = Driver.objects.filter(owner_id=user_id).filter(id=driver_id)
    if not driver:
        return HttpResponseRedirect('/')
    fromDateStr = utils.formatDateStr(fromDate)
    toDateStr = utils.formatDateStr(toDate, zeroHour=False)
    #Need to get all primary\temporary of the driver in this dates

    temporary = TemporaryDriver.objects.filter(driver = driver).filter(Q(end__gte = fromDateStr) | Q(start__lte = toDateStr))
    temporaryPeriodsLocations = utils.getLocationsOfPeriod(fromDateStr, toDateStr, temporary, isTemporaryDriver=True)
    primary = PrimaryDriver.objects.filter(driver = driver).filter(Q(end__gte = fromDateStr) | Q(end = None) )
    primaryPeriodsLocations = utils.getLocationsOfPeriod(fromDateStr, toDateStr, primary)
    periodsLocations =  temporaryPeriodsLocations + primaryPeriodsLocations
    total_length = 0
    for period in periodsLocations:
        total_length += period.get_length()
        
    alerts = AlertLog.objects.filter(location_log__driver = driver[0]).filter(Q(location_log__timestamp__gte = fromDateStr) & Q(location_log__timestamp__lte = toDateStr)).filter(notification_sent = True)
    
    context = {
        'menuParams' : utils.initMenuParameters(user),
        'fromDateStr' : fromDateStr[:-9], # [:-9] truncates the hour
        'toDateStr' : toDateStr[:-9],
        'fromDate' : fromDate, 
        'toDate' : toDate,
        'periodsLocations' : periodsLocations,
        'total_length':total_length,
        'alerts_count':len(alerts),
        'user' : user,
        'driver' : driver[0],
        'map_center_lat' : '32.047818',
        'map_center_long' : '34.761265',
        'activeMenu' : 'drivers',
    }
    
    return context