Private
Public Access
1
0

removing notification for new workout sync, adding CN liked KML api

This commit is contained in:
2024-04-01 11:15:31 +02:00
parent 65f486ac69
commit bfbc642312
9 changed files with 195 additions and 42 deletions

View File

@@ -252,7 +252,7 @@ Optional, not for CN
- Update one or more new courses from KML
"""
@api_view(["GET"])
@permission_classes([AllowAny])
@permission_classes([IsAuthenticated])
def course_list(request):
if request.method != 'GET': # pragma: no cover
dologging('apilog.log','{m} request to KML endpoint'.format(m=request.method))
@@ -305,7 +305,7 @@ def course_list(request):
return JsonResponse(response_dict, content_type='application/json; charset=utf8')
@api_view(["GET"])
@permission_classes([AllowAny])
@permission_classes([IsAuthenticated])
def get_crewnerd_kml(request,id=0):
if request.method != 'GET': # pragma: no cover
dologging('apilog.log','{m} request to CrewNerd KML endpoint'.format(m=request.method))
@@ -318,11 +318,11 @@ def get_crewnerd_kml(request,id=0):
kml = coursetokml(c, cn=True)
return HttpResponse(kml)
return HttpResponse(kml, content_type='text/xml')
#@csrf_exempt
@csrf_exempt
@api_view(["GET"])
@permission_classes([AllowAny])
@permission_classes([IsAuthenticated])
def get_crewnerd_multiple(request):
if request.method != 'GET': # pragma: no cover
dologging('apilog.log','{m} request to CrewNerd KML endpoint'.format(m=request.method))
@@ -344,7 +344,34 @@ def get_crewnerd_multiple(request):
kml = coursestokml(ids, cn=True)
return HttpResponse(kml)
return HttpResponse(kml, content_type='text/xml')
@csrf_exempt
@api_view(["GET"])
@permission_classes([IsAuthenticated])
def get_crewnerd_liked(request):
r = getrower(request.user)
if request.method != 'GET': # pragma: no cover
dologging('apilog.log','{m} request to CrewNerd KML endpoint'.format(m=request.method))
return HttpResponseNotAllowed("Method not supported")
ids = request.GET.get('id')
if ids is not None:
tdict = dict(request.GET.lists())
idsnew = []
for id in tdict['id']:
try:
idsnew.append(int(id))
except ValueError:
pass
ids = idsnew
else:
gcs = GeoCourse.objects.filter(followers=r)
ids = [c.id for c in gcs]
kml = coursestokml(ids, cn=True)
return HttpResponse(kml, content_type='text/xml')
# Stroke data views

View File

@@ -49,10 +49,14 @@ def courses_view(request):
courses = GeoCourse.objects.all().order_by("country", "name", "distance")
nearby = request.GET.get('nearby')
liked = request.GET.get('liked')
if nearby and lat_lon is not None: # pragma: no cover
courses = getnearestcourses(lat_lon, courses)
if liked:
courses = GeoCourse.objects.filter(followers=r)
# add search processing
query = request.GET.get('q')
if query: # pragma: no cover
@@ -226,8 +230,39 @@ def course_edit_view(request, id=0):
}
)
# @login_required()
@login_required()
def course_follow_view(request, id=0):
try:
course = GeoCourse.objects.get(id=id)
except GeoCourse.DoesNotExist: # pragma: no cover
raise Http404("Course doesn't exist")
r = getrower(request.user)
course.followers.add(r)
messages.info(request,"You have liked {c}. If you use CrewNerd, you can sync your course list to CrewNerd".format(c=course))
if request_is_ajax(request):
return JSONResponse({"course": course.id})
url = reverse("course_view", kwargs={'id':course.id})
return HttpResponseRedirect(url)
@login_required()
def course_unfollow_view(request, id=0):
try:
course = GeoCourse.objects.get(id=id)
except GeoCourse.DoesNotExist: # pragma: no cover
raise Http404("Course doesn't exist")
r = getrower(request.user)
course.followers.remove(r)
messages.info(request,"You have stopped following {c}.".format(c=course))
if request_is_ajax(request):
return JSONResponse({"course": course.id})
url = reverse("courses_view")
return HttpResponseRedirect(url)
def course_view(request, id=0):
try: