def get(self, request): kml = Kml(name='AUVSI SUAS Flight Data') kml_missions = kml.newfolder(name='Missions') users = User.objects.all() for mission in MissionConfig.objects.all(): kml_mission = mission_kml(mission, kml_missions, kml.document) kml_flights = kml_mission.newfolder(name='Flights') for user in users: if user.is_superuser: continue flights = TakeoffOrLandingEvent.flights(mission, user) if not flights: continue uas_telemetry_kml( user=user, flights=flights, logs=UasTelemetry.by_user(user), kml=kml_flights, kml_doc=kml.document) response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition'] = 'attachment; filename=mission.kml' response['Content-Length'] = str(len(response.content)) return response
def get(self, request): kml = Kml(name='AUVSI SUAS LIVE Flight Data') kml_mission = kml.newfolder(name='Missions') (mission, err) = active_mission() if err: return err MissionConfig.kml_all(kml_mission, [mission]) kml_flyzone = kml.newfolder(name='Fly Zones') FlyZone.kml_all(kml_flyzone) parameters = '?sessionid={}'.format(request.COOKIES['sessionid']) uri = request.build_absolute_uri( '/auvsi_admin/update.kml') + parameters netlink = kml.newnetworklink(name="Live Data") netlink.link.href = uri netlink.link.refreshmode = RefreshMode.oninterval netlink.link.refreshinterval = 0.5 response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition'] = 'attachment; filename=live.kml' response['Content-Length'] = str(len(response.content)) return response
def get(self, request): kml = Kml(name='AUVSI SUAS LIVE Flight Data') kml_mission = kml.newfolder(name='Missions') (mission, err) = active_mission() if err: return err MissionConfig.kml_all(kml_mission, [mission]) kml_flyzone = kml.newfolder(name='Fly Zones') FlyZone.kml_all(kml_flyzone) parameters = '?sessionid={}'.format(request.COOKIES['sessionid']) uri = request.build_absolute_uri( '/auvsi_admin/update.kml') + parameters netlink = kml.newnetworklink(name="Live Data") netlink.link.href = uri netlink.link.refreshmode = RefreshMode.oninterval netlink.link.refreshinterval = 0.5 response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition' ] = 'attachment; filename=%s.kml' % 'live' response['Content-Length'] = str(len(response.content)) return response
def get(self, request): kml = Kml(name='LIVE Data') UasTelemetry.live_kml(kml, timedelta(seconds=5)) response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition'] = 'attachment; filename=update.kml' response['Content-Length'] = str(len(response.content)) return response
def get(self, request): kml = Kml(name='LIVE Data') MovingObstacle.live_kml(kml, timedelta(seconds=5)) UasTelemetry.live_kml(kml, timedelta(seconds=5)) response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition'] = 'attachment; filename=update.kml' response['Content-Length'] = str(len(response.content)) return response
def test_kml(self): """ Tests the generation of kml data The correct number of elements are generated The meta-data tag is present """ for cur_obst in self.obstacles: kml = Kml() kml_mission = kml.newfolder(name='SubFolder') cur_obst.kml([ TimePeriod(timezone.now(), timezone.now() + datetime.timedelta(seconds=10)) ], kml_mission, kml.document) result_kml = kml.kml() self.assertEqual(101, result_kml.count('<gx:coord>'))
def test_toKML(self): """Test Generation of kml for all mission data""" kml = Kml() MissionConfig.kml_all(kml=kml) data = kml.kml() names = [ 'Off Axis', 'Home Position', 'Air Drop', 'Emergent LKP', 'Search Area', 'Waypoints', ] for name in names: tag = '<name>{}</name>'.format(name) err = 'tag "{}" not found in {}'.format(tag, data) self.assertIn(tag, data, err)
def test_kml(self): """ Tests the generation of kml data The correct number of elements are generated The meta-data tag is present """ array_field_tag = '<gx:SimpleArrayField name="proximity" type="float">' coordinates = [ (-76.0, 38.0, 0.0), (-76.0, 38.0, 10.0), (-76.0, 38.0, 20.0), (-76.0, 38.0, 30.0), (-76.0, 38.0, 100.0), (-76.0, 38.0, 30.0), (-76.0, 38.0, 60.0), ] user = User.objects.create_user('testuser', '*****@*****.**', 'testpass') user.save() # Create Coordinates start_time = timezone.now() next_time = start_time end_time = start_time for coord in coordinates: self.create_log_element(*coord, user=user, log_time=next_time) end_time = next_time next_time += datetime.timedelta(seconds=1) # Calculate expected number of data tags time_delta = end_time - start_time ms_elapsed = time_delta.total_seconds() * 1000 kml_output_resolution = 100 # milliseconds samples_expected = int(ms_elapsed / kml_output_resolution) for cur_obst in self.obstacles: kml = Kml() kml_mission = kml.newfolder(name='SubFolder') cur_obst.kml( path=UasTelemetry.by_user(user), kml=kml_mission, kml_doc=kml.document, ) result_kml = kml.kml() self.assertEqual(samples_expected, result_kml.count('<gx:value>')) self.assertIn(array_field_tag, result_kml)
def test_kml(self): """ Tests the generation of kml data The correct number of elements are generated The meta-data tag is present """ array_field_tag = '<gx:SimpleArrayField name="proximity" type="float">' coordinates = [ (-76.0, 38.0, 0.0), (-76.0, 38.0, 10.0), (-76.0, 38.0, 20.0), (-76.0, 38.0, 30.0), (-76.0, 38.0, 100.0), (-76.0, 38.0, 30.0), (-76.0, 38.0, 60.0), ] user = User.objects.create_user('testuser', '*****@*****.**', 'testpass') user.save() # Create Coordinates start_time = timezone.now() next_time = start_time end_time = start_time for coord in coordinates: self.create_log_element(*coord, user=user, log_time=next_time) end_time = next_time next_time += datetime.timedelta(seconds=1) # Calculate expected number of data tags time_delta = end_time - start_time ms_elapsed = time_delta.total_seconds() * 1000 kml_output_resolution = 100 # milliseconds samples_expected = int(ms_elapsed / kml_output_resolution) for cur_obst in self.obstacles: kml = Kml() kml_mission = kml.newfolder(name='SubFolder') cur_obst.kml( path=UasTelemetry.by_user(user), kml=kml_mission, kml_doc=kml.document) result_kml = kml.kml() self.assertEqual(samples_expected, result_kml.count('<gx:value>')) self.assertIn(array_field_tag, result_kml)
def get(self, request): kml = Kml(name='AUVSI SUAS Flight Data') kml_teams = kml.newfolder(name='Teams') kml_mission = kml.newfolder(name='Missions') users = User.objects.all() for user in users: # Ignore admins if user.is_superuser: continue UasTelemetry.kml(user=user, logs=UasTelemetry.by_user(user), kml=kml_teams, kml_doc=kml.document) MissionConfig.kml_all(kml_mission, kml.document) response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition'] = 'attachment; filename=mission.kml' response['Content-Length'] = str(len(response.content)) return response
def get(self, request): kml = Kml(name='AUVSI SUAS LIVE Flight Data') kml_missions = kml.newfolder(name='Missions') for mission in MissionConfig.objects.select_related().all(): mission_kml(mission, kml_missions, kml.document) parameters = '?sessionid={}'.format(request.COOKIES['sessionid']) uri = request.build_absolute_uri( '/api/missions/update.kml') + parameters netlink = kml.newnetworklink(name="Live Data") netlink.link.href = uri netlink.link.refreshmode = RefreshMode.oninterval netlink.link.refreshinterval = 1.0 response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition'] = 'attachment; filename=live.kml' response['Content-Length'] = str(len(response.content)) return response
def get(self, request): kml = Kml(name='AUVSI SUAS Flight Data') kml_teams = kml.newfolder(name='Teams') kml_mission = kml.newfolder(name='Missions') users = User.objects.all() for user in users: # Ignore admins if user.is_superuser: continue UasTelemetry.kml(user=user, logs=UasTelemetry.by_user(user), kml=kml_teams, kml_doc=kml.document) MissionConfig.kml_all(kml_mission) kml_flyzone = kml.newfolder(name='Fly Zones') FlyZone.kml_all(kml_flyzone) response = HttpResponse(kml.kml()) response['Content-Type'] = 'application/vnd.google-earth.kml+xml' response['Content-Disposition'] = 'attachment; filename=mission.kml' response['Content-Length'] = str(len(response.content)) return response