better kml export
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from rowers.views.statements import *
|
||||
from rowers.tasks import handle_calctrimp
|
||||
from rowers.opaque import encoder
|
||||
from rowers.courses import coursetokml
|
||||
from xml.etree import ElementTree as ET
|
||||
|
||||
import arrow
|
||||
@@ -11,6 +12,8 @@ from rowers.dataroutines import get_workouttype_from_tcx, get_startdate_time_zon
|
||||
from rest_framework.decorators import parser_classes
|
||||
from rest_framework.parsers import BaseParser
|
||||
|
||||
from rowers.utils import geo_distance
|
||||
|
||||
from datetime import datetime as dt
|
||||
|
||||
import rowingdata.tcxtools as tcxtools
|
||||
@@ -252,9 +255,38 @@ Optional, not for CN
|
||||
def course_list(request):
|
||||
if request.method != 'GET':
|
||||
dologging('apilog.log','{m} request to KML endpoint'.format(m=request.method))
|
||||
return HttpResponseNotAllower("Method not supported")
|
||||
return HttpResponseNotAllowed("Method not supported")
|
||||
|
||||
query_data = {}
|
||||
name = request.GET.get('name')
|
||||
distance = request.GET.get('course_distance')
|
||||
latitude = request.GET.get('latitude')
|
||||
longitude = request.GET.get('longitude')
|
||||
distance_from = request.GET.get('distance_from')
|
||||
if name is not None:
|
||||
query_data['name__contains'] = name
|
||||
if distance is not None:
|
||||
try:
|
||||
query_data['distance__lte'] = int(distance)+50
|
||||
query_data['distance__gte'] = int(distance)-50
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
courses = GeoCourse.objects.filter(**query_data)
|
||||
if latitude is not None and longitude is not None and distance_from is not None:
|
||||
try:
|
||||
newlist = []
|
||||
for c in courses:
|
||||
distance = geo_distance(float(latitude), float(longitude), c.coord[0], c.coord[1])[0]
|
||||
if distance < float(distance_from):
|
||||
newlist.append(c)
|
||||
courses = newlist
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
||||
courses = GeoCourse.objects.all()
|
||||
courselist = []
|
||||
for c in courses:
|
||||
d = {
|
||||
@@ -269,10 +301,23 @@ def course_list(request):
|
||||
|
||||
response_dict = {'courses': courselist}
|
||||
|
||||
print(response_dict)
|
||||
|
||||
return JsonResponse(response_dict, content_type='application/json; charset=utf8')
|
||||
|
||||
@api_view(["GET"])
|
||||
def get_crewnerd_kml(request,id=0):
|
||||
if request.method != 'GET':
|
||||
dologging('apilog.log','{m} request to CrewNerd KML endpoint'.format(m=request.method))
|
||||
return HttpResponseNotAllowed("Method not supported")
|
||||
|
||||
try:
|
||||
c = GeoCourse.objects.get(id=id)
|
||||
except GeoCourse.DoesNotExist:
|
||||
raise Http404("This course does not exist")
|
||||
|
||||
kml = coursetokml(c, cn=True)
|
||||
|
||||
return HttpResponse(kml)
|
||||
|
||||
# Stroke data views
|
||||
|
||||
@csrf_exempt
|
||||
|
||||
Reference in New Issue
Block a user