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
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)
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)
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',})
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)
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)
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