Private
Public Access
1
0

Merge branch 'release/v13.12'

This commit is contained in:
Sander Roosendaal
2020-07-01 14:58:02 +02:00
2 changed files with 76 additions and 26 deletions

View File

@@ -66,7 +66,7 @@
</p>
{% if location %}
<p>
<a href="/rowers/list-courses/?nearby=true">Filter nearby courses</a>
<a href="/rowers/list-courses/?nearby=true">Filter courses closest to you</a>
{{ city }} {{ country_name }} {{ time_zone }}
</p>
<p>

View File

@@ -9,6 +9,71 @@ from rowers.scoring import *
from django.contrib.gis.geoip2 import GeoIP2
# distance of course from lat_lon in km
def howfaris(lat_lon,course):
coords = course.coord
distance = geo_distance(lat_lon[0],lat_lon[1],coords[0],coords[1])[0]
return distance
# get nearest races
def getnearestraces(lat_lon,races):
newlist = []
counter = 0
for race in races:
if race.course is None:
newlist.append(race)
else:
c = race.course
coords = c.coord
distance = howfaris(lat_lon,c)
if distance < 100:
newlist.append(race)
counter += 1
if counter>0:
races = newlist
else:
courseraces = races.exclude(course__isnull=True)
orders = [(c.id,howfaris(lat_lon,c.course)) for c in courseraces]
orders = sorted(orders,key = lambda tup:tup[1])
ids = [id for id,distance in orders[0:4]]
for id, distance in orders[5:]:
if distance<100:
ids.append(id)
for id in ids:
newlist.append(VirtualRace.objects.get(id=id))
races = newlist
return races
def getnearestcourses(lat_lon,courses):
newlist = []
counter = 0
for c in courses:
coords = c.coord
distance = howfaris(lat_lon,c)
if distance < 100:
newlist.append(race)
counter += 1
if counter>0:
courses = newlist
else:
orders = [(c.id,howfaris(lat_lon,c)) for c in courses]
orders = sorted(orders,key = lambda tup:tup[1])
ids = [id for id,distance in orders[0:4]]
for id, distance in orders[5:]:
if distance<100:
ids.append(id)
for id in ids:
newlist.append(GeoCourse.objects.get(id=id))
courses = newlist
return courses
# List Courses
def courses_view(request):
r = getrower(request.user)
@@ -21,9 +86,9 @@ def courses_view(request):
except:
lat_lon = None
city = {
'city': None,
'country_name': None,
'time_zone': None,
'city': '',
'country_name': '',
'time_zone': '',
}
@@ -31,13 +96,7 @@ def courses_view(request):
nearby = request.GET.get('nearby')
if nearby and lat_lon is not None:
newlist = []
for c in courses:
coords = c.coord
distance = geo_distance(lat_lon[0],lat_lon[1],coords[0],coords[1])[0]
if distance < 100:
newlist.append(c)
courses = newlist
courses = getnearestcourses(lat_lon,courses)
@@ -686,9 +745,9 @@ def virtualevents_view(request):
except:
lat_lon = None
city = {
'city': None,
'country_name': None,
'time_zone': None,
'city': '',
'country_name': '',
'time_zone': '',
}
# default races
@@ -766,19 +825,10 @@ def virtualevents_view(request):
form = VirtualRaceSelectForm()
nearby = request.GET.get('nearby')
if nearby and lat_lon is not None:
newlist = []
for race in races:
if race.course is None:
newlist.append(race)
else:
c = race.course
coords = c.coord
distance = geo_distance(lat_lon[0],lat_lon[1],coords[0],coords[1])[0]
if distance < 100:
newlist.append(race)
races = newlist
if nearby and lat_lon is not None:
races = getnearestraces(lat_lon,races)
if is_ajax:
return render(request,'racelist.html',