Merge branch 'release/v22.2.6'
This commit is contained in:
@@ -36,6 +36,21 @@ from rowers.models import VirtualRace
|
||||
|
||||
# distance of course from lat_lon in km
|
||||
|
||||
def pass_start(df, course):
|
||||
if df.empty:
|
||||
return False
|
||||
|
||||
def f(x):
|
||||
return coordinate_in_path(x[' latitude'], x[' longitude'], p)
|
||||
|
||||
|
||||
polygons = course.polygons.all()
|
||||
p = polygon_to_path(polygons[0])
|
||||
|
||||
inpolygon = df.apply(lambda row:f(row), axis=1).copy()
|
||||
|
||||
return inpolygon.any()
|
||||
|
||||
|
||||
def howfaris(lat_lon, course):
|
||||
coords = course.coord
|
||||
|
||||
@@ -14,7 +14,6 @@ class InvalidTrajectoryError(Exception):
|
||||
def __str__(self): # pragma: no cover
|
||||
return repr(self.value)
|
||||
|
||||
|
||||
def time_in_path(df, p, maxmin='max', getall=False, name='unknown', logfile=None):
|
||||
|
||||
if df.empty: # pragma: no cover
|
||||
|
||||
@@ -3727,6 +3727,18 @@ class Workout(models.Model):
|
||||
elif self.workouttype in mytypes.otetypes and self.boattype in mytypes.boattypes:
|
||||
self.boattype = 'static'
|
||||
|
||||
records = VirtualRaceResult.objects.filter(workoutid=self.pk)
|
||||
for record in records:
|
||||
record.boattype = self.boattype
|
||||
record.boatclass = self.workouttype
|
||||
record.save()
|
||||
|
||||
records = IndoorVirtualRaceResult.objects.filter(workoutid=self.pk)
|
||||
for record in records:
|
||||
record.boattype = self.boattype
|
||||
record.boatclass = self.workouttype
|
||||
record.save()
|
||||
|
||||
super(Workout, self).save(*args, **kwargs)
|
||||
|
||||
def __str__(self):
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
<p>
|
||||
<form method="GET" id="competitorform">
|
||||
{{ dateform.as_table }}
|
||||
{% for competitor in competitors %}
|
||||
{% if competitor in selected_users %}
|
||||
<input type="checkbox" name="users" value="{{ competitor.id|encode }}" checked>{{ competitor }}<br>
|
||||
|
||||
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
@@ -13,6 +13,7 @@ from json.decoder import JSONDecodeError
|
||||
|
||||
import ruptures as rpt
|
||||
from rowers.courses import getnearestcourses
|
||||
from rowers.courses import pass_start
|
||||
from pandas.errors import IntCastingNaNError
|
||||
|
||||
def default(o): # pragma: no cover
|
||||
@@ -1337,6 +1338,18 @@ def course_mapcompare_view(request, id=0):
|
||||
except GeoCourse.DoesNotExist: # pragma: no cover
|
||||
raise Http404("Course does not exist")
|
||||
|
||||
startdate = request.GET.get('startdate', None)
|
||||
enddate = request.GET.get('enddate', None)
|
||||
if startdate:
|
||||
startdate = iso8601.parse_date(startdate)
|
||||
else:
|
||||
startdate = timezone.now()-datetime.timedelta(days=30)
|
||||
|
||||
if enddate:
|
||||
enddate = iso8601.parse_date(enddate)
|
||||
else:
|
||||
enddate = timezone.now()+datetime.timedelta(days=1)
|
||||
|
||||
focususer = encoder.decode_hex(request.GET.get('user',None))
|
||||
if focususer:
|
||||
try:
|
||||
@@ -1380,7 +1393,12 @@ def course_mapcompare_view(request, id=0):
|
||||
|
||||
selected_users = Rower.objects.filter(id__in=selected_ids)
|
||||
|
||||
workoutids = [result.workoutid for result in results]
|
||||
#workoutids = [result.workoutid for result in results]
|
||||
workoutids = []
|
||||
for result in results:
|
||||
w = Workout.objects.get(id=result.workoutid)
|
||||
if w.startdatetime >= startdate and w.startdatetime <= enddate:
|
||||
workoutids.append(result.workoutid)
|
||||
|
||||
startenddict = {}
|
||||
|
||||
@@ -1388,14 +1406,8 @@ def course_mapcompare_view(request, id=0):
|
||||
startenddict[result.workoutid] = (result.startsecond, result.endsecond)
|
||||
|
||||
if len(workoutids) == 0: # pragma: no cover
|
||||
url = reverse('course_view',
|
||||
kwargs={
|
||||
'id': course.id,
|
||||
})
|
||||
|
||||
messages.info(request, 'There are no results to display')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts = []
|
||||
for id in workoutids:
|
||||
@@ -1412,6 +1424,11 @@ def course_mapcompare_view(request, id=0):
|
||||
labeldict=labeldict,
|
||||
startenddict=startenddict)
|
||||
|
||||
dateform = DateRangeForm(initial={
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
})
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url': reverse('courses_view'),
|
||||
@@ -1447,6 +1464,7 @@ def course_mapcompare_view(request, id=0):
|
||||
'teams': [],
|
||||
'competitors': competitors,
|
||||
'selected_users': selected_users,
|
||||
'dateform': dateform,
|
||||
})
|
||||
|
||||
|
||||
@@ -4602,7 +4620,12 @@ def workout_edit_view(request, id=0, message="", successmessage=""):
|
||||
strict=True)
|
||||
|
||||
suggested_courses = list(set(courses) ^ set(suggested_courses))
|
||||
|
||||
s2 = []
|
||||
for c in suggested_courses:
|
||||
if pass_start(rowdata.df, c):
|
||||
s2.append(c)
|
||||
|
||||
suggested_courses = s2
|
||||
|
||||
|
||||
breadcrumbs = [
|
||||
@@ -4712,6 +4735,12 @@ def workout_map_view(request, id=0):
|
||||
strict=True)
|
||||
|
||||
suggested_courses = list(set(courses) ^ set(suggested_courses))
|
||||
s2 = []
|
||||
for c in suggested_courses:
|
||||
if pass_start(rowdata.df, c):
|
||||
s2.append(c)
|
||||
|
||||
suggested_courses = s2
|
||||
|
||||
|
||||
return render(request, 'map_view.html',
|
||||
|
||||
Reference in New Issue
Block a user