From 224ae2faa5c6a4ae6c53f805a8a9d7e0246a9095 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 12 Jul 2020 09:05:08 +0200 Subject: [PATCH] better course country detecton --- rowers/courses.py | 28 ++++++++++------------ rowers/forms.py | 1 + rowers/management/commands/getblogposts.py | 6 ++++- rowers/views/racesviews.py | 8 +++++++ 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/rowers/courses.py b/rowers/courses.py index f0d7ecb3..20e709e1 100644 --- a/rowers/courses.py +++ b/rowers/courses.py @@ -73,7 +73,7 @@ def crewnerdcourse(doc): 'description':description, 'polygons':polygons }) - + return courses def get_polygons(polygonpms): @@ -103,7 +103,7 @@ def get_polygons(polygonpms): return polygons - + def coursetokml(course): top = Element('kml') @@ -112,7 +112,7 @@ def coursetokml(course): top.attrib['xmlns:' + prefix] = uri else: top.attrib['xmlns'] = uri - + document = SubElement(top,'Document') name = SubElement(document, 'name') name.text = 'Courses.kml' @@ -124,11 +124,11 @@ def coursetokml(course): coursename.text = course.name open = SubElement(folder2,'open') open.text = '1' - + polygons = GeoPolygon.objects.filter(course=course).order_by("order_in_course") polygonsxml = [] - + for polygon in polygons: placemark = SubElement(folder2,'Placemark') polygonname = SubElement(placemark,'name') @@ -162,7 +162,7 @@ def kmltocourse(f): if courses: return crewnerdcourse(courses) - + polygonpms = doc.findall('.//opengis:Placemark[opengis:Polygon]',ns) return get_polygons(polygonpms) @@ -185,13 +185,9 @@ def createcourse( if i==0 and j==0: latitude = point['latitude'] longitude = point['longitude'] - g = geocoder.google([latitude,longitude],method='reverse') + g = geocoder.osm([latitude,longitude],method='reverse') if g.ok: - address = g.raw['address_components'] - country = 'unknown' - for a in address: - if 'country' in a['types']: - country = a['long_name'] + country = g.json['country'] else: country = 'unknown' c.country = country @@ -251,13 +247,13 @@ def get_time_course(ws,course): paths.append(path) - - + + ( coursetimeseconds, coursemeters, coursecompleted, - + ) = coursetime_paths(rowdata,paths) ( coursetimefirst, @@ -268,7 +264,7 @@ def get_time_course(ws,course): coursetimeseconds = coursetimeseconds-coursetimefirst coursemeters = coursemeters-coursemetersfirst - + return coursetimeseconds,coursemeters,coursecompleted def replacecourse(course1,course2): diff --git a/rowers/forms.py b/rowers/forms.py index 27dc4158..0b51fc76 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -209,6 +209,7 @@ class CourseForm(forms.Form): notes = forms.CharField(required=False, max_length=200,label='Course Notes', widget=forms.Textarea) + country = forms.CharField(required=False,max_length=150,label='Country') def __init__(self, *args, **kwargs): from django.forms.widgets import HiddenInput diff --git a/rowers/management/commands/getblogposts.py b/rowers/management/commands/getblogposts.py index 3b23334b..b6cbf02b 100644 --- a/rowers/management/commands/getblogposts.py +++ b/rowers/management/commands/getblogposts.py @@ -6,6 +6,7 @@ import os import requests import datetime import arrow +import json from simplejson.errors import JSONDecodeError @@ -24,7 +25,10 @@ class Command(BaseCommand): try: blogs_json = response.json() except JSONDecodeError: - blogs_json = [] + try: + blogs_json = json.loads(response.text) + except JSONDecodeError: + blogs_json = [] else: blogs_json = [] except ConnectionError: diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index de462794..10f2b4b1 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -579,6 +579,7 @@ def course_upload_replace_view(request,id=0): if form.is_valid(): f = form.cleaned_data['file'] notes = form.cleaned_data['notes'] + country = form.cleaned_data['country'] if f is not None: filename, path_and_filename = handle_uploaded_file(f) @@ -593,6 +594,9 @@ def course_upload_replace_view(request,id=0): polygons = course['polygons'] course = courses.createcourse(r,cname,polygons,notes=cnotes) + if course.country == 'unknown': + course.country = country + course.save() url = reverse(course_update_confirm, kwargs = { @@ -703,6 +707,7 @@ def course_upload_view(request): f = form.cleaned_data['file'] name = form.cleaned_data['name'] notes = form.cleaned_data['notes'] + country = form.cleaned_data['country'] if f is not None: filename,path_and_filename = handle_uploaded_file(f) @@ -715,6 +720,9 @@ def course_upload_view(request): polygons = course['polygons'] course = courses.createcourse(r,cname,polygons,notes=cnotes) + if course.country == 'unknown': + course.country = country + course.save() os.remove(path_and_filename)