Merge branch 'release/v13.12'
This commit is contained in:
@@ -66,7 +66,7 @@
|
|||||||
</p>
|
</p>
|
||||||
{% if location %}
|
{% if location %}
|
||||||
<p>
|
<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 }}
|
{{ city }} {{ country_name }} {{ time_zone }}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -9,6 +9,71 @@ from rowers.scoring import *
|
|||||||
|
|
||||||
from django.contrib.gis.geoip2 import GeoIP2
|
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
|
# List Courses
|
||||||
def courses_view(request):
|
def courses_view(request):
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
@@ -21,9 +86,9 @@ def courses_view(request):
|
|||||||
except:
|
except:
|
||||||
lat_lon = None
|
lat_lon = None
|
||||||
city = {
|
city = {
|
||||||
'city': None,
|
'city': '',
|
||||||
'country_name': None,
|
'country_name': '',
|
||||||
'time_zone': None,
|
'time_zone': '',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -31,13 +96,7 @@ def courses_view(request):
|
|||||||
nearby = request.GET.get('nearby')
|
nearby = request.GET.get('nearby')
|
||||||
|
|
||||||
if nearby and lat_lon is not None:
|
if nearby and lat_lon is not None:
|
||||||
newlist = []
|
courses = getnearestcourses(lat_lon,courses)
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -686,9 +745,9 @@ def virtualevents_view(request):
|
|||||||
except:
|
except:
|
||||||
lat_lon = None
|
lat_lon = None
|
||||||
city = {
|
city = {
|
||||||
'city': None,
|
'city': '',
|
||||||
'country_name': None,
|
'country_name': '',
|
||||||
'time_zone': None,
|
'time_zone': '',
|
||||||
}
|
}
|
||||||
|
|
||||||
# default races
|
# default races
|
||||||
@@ -766,19 +825,10 @@ def virtualevents_view(request):
|
|||||||
form = VirtualRaceSelectForm()
|
form = VirtualRaceSelectForm()
|
||||||
|
|
||||||
nearby = request.GET.get('nearby')
|
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:
|
if is_ajax:
|
||||||
return render(request,'racelist.html',
|
return render(request,'racelist.html',
|
||||||
|
|||||||
Reference in New Issue
Block a user