def clear_databases(self): self.stdout.write("Deleting data from Kml and Incidences ...") try: Kml.objects.all().delete() Incidence.objects.all().delete() sync_kmls_file() sync_kmls_to_galaxy() except Exception: self.stdout.write(self.style.error("Error deleting data from" + " the tables."))
def clear_databases(self): self.stdout.write("Deleting data from Kml and Incidences ...") try: Kml.objects.all().delete() Incidence.objects.all().delete() sync_kmls_file() sync_kmls_to_galaxy() except Exception: self.stdout.write( self.style.error("Error deleting data from" + " the tables."))
def edit_meteostation(request, id): requested_meteo = MeteoStation.objects.get(pk=id) form = MeteoStationForm(instance=requested_meteo) if request.method == 'POST': form = MeteoStationForm(request.POST, instance=requested_meteo) if form.is_valid(): meteostation = form.save(commit=False) meteostation.save() create_kml(meteostation, "meteo", "edit") sync_kmls_file() sync_kmls_to_galaxy() return HttpResponseRedirect('/meteostations') return render(request, 'meteostation_form.html', {'form': form})
def submit_meteostation(request): if request.method == 'POST': form = forms.MeteoStationForm(request.POST) if form.is_valid(): meteostation = form.save(commit=False) meteostation.save() create_kml(meteostation, "meteo", "create") sync_kmls_file() sync_kmls_to_galaxy() return HttpResponseRedirect('/meteostations/') else: form = forms.MeteoStationForm() return render(request, 'meteostation_form.html', {'form': form})
def edit_droppoint(request, id): requested_droppoint = DropPoint.objects.get(pk=id) form = DropPointForm(instance=requested_droppoint) if request.method == 'POST': form = DropPointForm(request.POST, instance=requested_droppoint) if form.is_valid(): droppoint = form.save(commit=False) droppoint.save() create_kml(droppoint, "droppoint", "edit") sync_kmls_file() sync_kmls_to_galaxy() return HttpResponseRedirect('/droppoints') return render(request, 'droppoint_form.html', {'form': form})
def submit_droppoint(request): if request.method == 'POST': form = forms.DropPointForm(request.POST) if form.is_valid(): droppoint = form.save(commit=False) droppoint.save() create_kml(droppoint, "droppoint", "create") sync_kmls_file() sync_kmls_to_galaxy() return HttpResponseRedirect('/droppoints/') else: form = forms.DropPointForm() return render(request, 'droppoint_form.html', {'form': form})
def delete_kml(id, type): filename = type + "_" + str(id) + ".kml" path = os.path.dirname(__file__) + "/static/kml/" for files in os.walk(path): if filename in files[2]: Kml.objects.get(name=filename).delete() os.remove(path + filename) if type == 'hangar': filename_inf = type + "_" + str(id) + "_inf.kml" if filename_inf in files[2]: Kml.objects.get(name=filename_inf).delete() os.remove(path + filename_inf) sync_kmls_file() sync_kmls_to_galaxy() return
def edit_hangar(request, id): requested_hangar = Hangar.objects.get(pk=id) form = HangarForm(instance=requested_hangar) if request.method == 'POST': form = HangarForm(request.POST, instance=requested_hangar) if form.is_valid(): hangar = form.save(commit=False) hangar.drone.origin_lat = hangar.latitude hangar.drone.origin_lon = hangar.longitude # drone.altitude = altitude hangar.drone.save() hangar.save() create_kml(hangar, "hangar", "edit") sync_kmls_file() sync_kmls_to_galaxy() return HttpResponseRedirect('/hangars') return render(request, 'hangar_form.html', {'form': form})
def submit_hangar(request): if request.method == 'POST': form = forms.HangarForm(request.POST) if form.is_valid(): hangar = form.save(commit=False) hangar.drone.origin_lat = hangar.latitude hangar.drone.origin_lon = hangar.longitude # drone.altitude = altitude hangar.drone.save() hangar.save() create_kml(hangar, "hangar", "create") sync_kmls_file() sync_kmls_to_galaxy() return HttpResponseRedirect('/hangars/') else: form = forms.HangarForm() return render(request, 'hangar_form.html', {'form': form})
def find_emergency_path(request): MAX_WIND_SPEED = 20.0 url = 'http://api.openweathermap.org/data/2.5/weather?q=Lleida&units=metric' response = requests.get(url=url) data = json.loads(response.text) #try: # if data['wind']['speed'] >= MAX_WIND_SPEED or bool(data['rain']): # print data['rain'] # print data['wind']['speed'] # return HttpResponse(status=503) #except KeyError: # pass lat = request.GET.get('lat', '') lon = request.GET.get('lng', '') path = os.path.dirname(__file__) + "/static/kml/" last_distance = sys.maxint all_hangars = models.Hangar.objects.all() selected_hangar = None all_droppoints = models.DropPoint.objects.all() selected_droppoint = None point_location = Point(float(lon), float(lat)) for droppoint in all_droppoints: distance = D(m=point_location.distance(Point(droppoint.longitude, droppoint.latitude))) if distance.m < last_distance: last_distance = distance.m selected_droppoint = droppoint last_distance = sys.maxint point_location = Point(selected_droppoint.longitude, selected_droppoint.latitude) for hangar in all_hangars: distance = D(m=point_location.distance(Point(hangar.longitude, hangar.latitude))) if distance.m < last_distance: last_distance = distance.m selected_hangar = hangar # print selected_hangar.name, selected_hangar.drone.name, selected_droppoint.name selected_hangar.drone.destination_lat = selected_droppoint.latitude selected_hangar.drone.destination_lon = selected_droppoint.longitude if not selected_hangar.is_available: return HttpResponse(status=503) kml_generator.weather_info(os.path.dirname(__file__) + "/static/kml/meteo_info.kml", data['main']['temp'], data['main']['temp_max'], data['main']['temp_min'], data['wind']['speed'], data['clouds']['all'], data['main']['pressure'], data['main']['humidity'], data['weather'][0]['description']) generate_mission_file(selected_hangar) kml_generator.create_emergency_marker(lat, lon, path + "incidence.kml") Kml(name="incidence.kml", url="static/kml/incidence.kml", visibility=True).save() sync_kmls_file() sync_kmls_to_galaxy(emergency=True) kml_generator.find_drone_path(selected_hangar, selected_droppoint, path) Kml.objects.get(name="incidence.kml").delete() os.remove(path + "incidence.kml") for step in range(0, 34, 1): Kml.objects.get(name="drone_" + str(step) + ".kml").delete() os.remove(path + "drone_" + str(step) + ".kml") sync_kmls_file() sync_kmls_to_galaxy(emergency=True) return HttpResponse(status=201)
def drone_to_galaxy(): sync_kmls_file() sync_kmls_to_galaxy(emergency=True) time.sleep(1.5)
def find_emergency_path(request): MAX_WIND_SPEED = 20.0 url = 'http://api.openweathermap.org/data/2.5/weather?q=Lleida&units=metric' response = requests.get(url=url) data = json.loads(response.text) #try: # if data['wind']['speed'] >= MAX_WIND_SPEED or bool(data['rain']): # print data['rain'] # print data['wind']['speed'] # return HttpResponse(status=503) #except KeyError: # pass lat = request.GET.get('lat', '') lon = request.GET.get('lng', '') path = os.path.dirname(__file__) + "/static/kml/" last_distance = sys.maxint all_hangars = models.Hangar.objects.all() selected_hangar = None all_droppoints = models.DropPoint.objects.all() selected_droppoint = None point_location = Point(float(lon), float(lat)) for droppoint in all_droppoints: distance = D(m=point_location.distance( Point(droppoint.longitude, droppoint.latitude))) if distance.m < last_distance: last_distance = distance.m selected_droppoint = droppoint last_distance = sys.maxint point_location = Point(selected_droppoint.longitude, selected_droppoint.latitude) for hangar in all_hangars: distance = D(m=point_location.distance( Point(hangar.longitude, hangar.latitude))) if distance.m < last_distance: last_distance = distance.m selected_hangar = hangar # print selected_hangar.name, selected_hangar.drone.name, selected_droppoint.name selected_hangar.drone.destination_lat = selected_droppoint.latitude selected_hangar.drone.destination_lon = selected_droppoint.longitude if not selected_hangar.is_available: return HttpResponse(status=503) kml_generator.weather_info( os.path.dirname(__file__) + "/static/kml/meteo_info.kml", data['main']['temp'], data['main']['temp_max'], data['main']['temp_min'], data['wind']['speed'], data['clouds']['all'], data['main']['pressure'], data['main']['humidity'], data['weather'][0]['description']) generate_mission_file(selected_hangar) kml_generator.create_emergency_marker(lat, lon, path + "incidence.kml") Kml(name="incidence.kml", url="static/kml/incidence.kml", visibility=True).save() sync_kmls_file() sync_kmls_to_galaxy(emergency=True) kml_generator.find_drone_path(selected_hangar, selected_droppoint, path) Kml.objects.get(name="incidence.kml").delete() os.remove(path + "incidence.kml") for step in range(0, 34, 1): Kml.objects.get(name="drone_" + str(step) + ".kml").delete() os.remove(path + "drone_" + str(step) + ".kml") sync_kmls_file() sync_kmls_to_galaxy(emergency=True) return HttpResponse(status=201)
def refresh_kml(request): sync_kmls_file() sync_kmls_to_galaxy() return HttpResponse("Done")