Private
Public Access
1
0

Merge branch 'release/v13.10'

This commit is contained in:
Sander Roosendaal
2020-07-01 09:20:48 +02:00
10 changed files with 114 additions and 20 deletions
+1 -1
View File
@@ -2178,7 +2178,7 @@ def read_cols_df_sql(ids, columns, convertnewtons=True):
try:
df = pd.read_parquet(f,columns=columns)
data.append(df)
except OSError:
except (OSError,IndexError):
rowdata,row = getrowdata(id=id)
if rowdata and len(rowdata.df):
datadf = dataprep(rowdata.df,id=id,bands=True,otwpower=True,barchart=True)
+20 -1
View File
@@ -947,7 +947,26 @@ class PlanSelectForm(forms.Form):
class CourseSelectForm(forms.Form):
course = forms.ModelChoiceField(queryset=GeoCourse.objects.all())
course = forms.ModelChoiceField(queryset=GeoCourse.objects.filter())
def __init__(self, *args, **kwargs):
course = kwargs.pop('course',None)
manager = kwargs.pop('manager',None)
super(CourseSelectForm,self).__init__(*args,**kwargs)
if course is not None:
print('aap',course)
d_min = 0.5*course.distance
d_max = 2*course.distance
country = course.country
countries = ['unknown',country]
print(countries)
self.fields['course'].queryset = self.fields['course'].queryset.filter(
distance__gt = d_min,distance__lt = d_max,
country__in = countries
).exclude(id=course.id)
if manager is not None:
self.fields['course'].queryset = self.fields['course'].queryset.filter(manager=manager)
print(self.fields['course'].queryset)
class WorkoutSingleSelectForm(forms.Form):
workout = forms.ModelChoiceField(
+5
View File
@@ -1221,6 +1221,7 @@ class GeoCourse(models.Model):
name = models.CharField(max_length=150,blank=True)
country = models.CharField(max_length=150,blank=True)
notes = models.CharField(blank=True,max_length=200,verbose_name='Course Notes')
def __str__(self):
name = self.name
country = self.country
@@ -1236,6 +1237,10 @@ class GeoCourse(models.Model):
d = d,
)
@property
def coord(self):
return course_coord_center(self)
class GeoCourseEditForm(ModelForm):
class Meta:
model = GeoCourse
+1 -1
View File
@@ -1400,7 +1400,7 @@ def default_class(r,w,race):
agemin__lt=age,agemax__gt=age
).order_by(
"agemax","-agemin","boattype","sex",
"weightcategory","referencespeed")
"weightclass","referencespeed")
if standards.count()==0:
# boolean, boattype, boatclass, adaptiveclass, weightclass, sex, coursestandard,
+3
View File
@@ -30,6 +30,9 @@
<tr>
<th>Notes</th><td>{{ course.notes|linebreaks }}</td>
</tr>
<tr>
<th>Manager</th><td>{{ course.manager }}</td>
</tr>
</table>
</li>
<li class="grid_2">
+6
View File
@@ -64,6 +64,12 @@
<input type="submit" value="GO"></input>
</form>
</p>
{% if location %}
<p>
<a href="/rowers/list-courses/?nearby=true">Filter nearby courses</a>
<a href="/rowers/list-courses/">All courses</a>
</p>
{% endif %}
<p>
<a href="/rowers/courses/upload/">Add Courses</a>
</p>
+8 -1
View File
@@ -67,12 +67,19 @@
<p>
<input name='form' class='green button' type='submit' value="Submit">
</form>
</p>
</p>
</li>
<li class="grid_4">
<p>Click on the challenge name or on the Details button to see the challenge
details (and manage your participation and results). Click on the
course name to see the course details.
</p>
{% if location %}
<p>
<a href="/rowers/virtualevents/?nearby=true">Challenges in your area</a>
<a href="/rowers/virtualevents/">All Challenges</a>
</p>
{% endif %}
</li>
<li class="grid_4" id="racelist">
+57 -5
View File
@@ -7,11 +7,34 @@ from rowers.views.statements import *
from rowsandall_app.settings import SITE_URL
from rowers.scoring import *
from django.contrib.gis.geoip2 import GeoIP2
# List Courses
def courses_view(request):
r = getrower(request.user)
g = GeoIP2()
ip = request.META.get('REMOTE_ADDR')
try:
lat_lon = g.lat_lon(ip)
city = g.city(ip)
except:
lat_lon = None
city = None
courses = GeoCourse.objects.all().order_by("country","name","distance")
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 = GeoCourse.objects.all().order_by("country","name")
# add search processing
query = request.GET.get('q')
@@ -34,6 +57,7 @@ def courses_view(request):
'active':'nav-racing',
'searchform':searchform,
'rower':r,
'location':lat_lon,
})
# List Courses
@@ -116,7 +140,7 @@ def course_replace_view(request,id=0):
r = getrower(request.user)
thecourses = GeoCourse.objects.filter(manager=r).exclude(id=id)
#thecourses = GeoCourse.objects.filter(manager=r).exclude(id=id)
if request.method == 'POST':
form = CourseSelectForm(request.POST)
@@ -132,8 +156,8 @@ def course_replace_view(request,id=0):
return HttpResponseRedirect(url)
else:
form = CourseSelectForm()
form.fields["course"].queryset = thecourses
form = CourseSelectForm(course=course,manager=r)
#form.fields["course"].queryset = thecourses
script,div = course_map(course)
@@ -646,6 +670,15 @@ def virtualevents_view(request):
if request.is_ajax():
is_ajax = True
g = GeoIP2()
ip = request.META.get('REMOTE_ADDR')
try:
lat_lon = g.lat_lon(ip)
city = g.city(ip)
except:
lat_lon = None
city = None
# default races
races1 = VirtualRace.objects.filter(
startdate__gte=datetime.date.today(),
@@ -656,6 +689,8 @@ def virtualevents_view(request):
)
races = (races1 | races2).order_by("startdate","start_time")
if len(races) == 0:
@@ -718,10 +753,26 @@ def virtualevents_view(request):
else:
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 is_ajax:
return render(request,'racelist.html',
{ 'races':races,
'rower':r,
'location': lat_lon,
})
breadcrumbs = [
@@ -737,6 +788,7 @@ def virtualevents_view(request):
'breadcrumbs':breadcrumbs,
'active':'nav-racing',
'rower':r,
'location': lat_lon,
}
)
@@ -3134,7 +3186,7 @@ def virtualevent_entry_edit_view(request,id=0,entryid=0):
records = resultobj.objects.filter(
userid = r.id,
race=race
)
).exclude(id=entryid)
try:
record = resultobj.objects.get(id=entryid)
+2
View File
@@ -535,3 +535,5 @@ try:
except KeyError:
RECAPTCHA_SITE_KEY = ''
RECAPTCHA_SITE_SECRET = ''
GEOIP_PATH = STATIC_ROOT
Binary file not shown.

After

Width:  |  Height:  |  Size: 60 MiB