improved courses kml download
This commit is contained in:
@@ -33,6 +33,11 @@ from rowers.utils import geo_distance
|
|||||||
|
|
||||||
ns = {'opengis': 'http://www.opengis.net/kml/2.2'}
|
ns = {'opengis': 'http://www.opengis.net/kml/2.2'}
|
||||||
|
|
||||||
|
xmlns_uris_dict = {'gx': 'http://www.google.com/kml/ext/2.2',
|
||||||
|
'kml': 'http://www.google.com/kml/ext/2.2',
|
||||||
|
'atom': "http://www.w3.org/2005/Atom",
|
||||||
|
'': "http://www.opengis.net/kml/2.2"}
|
||||||
|
|
||||||
|
|
||||||
from rowers.models import (
|
from rowers.models import (
|
||||||
Rower, Workout,
|
Rower, Workout,
|
||||||
@@ -91,11 +96,18 @@ def get_polygons(polygonpms):
|
|||||||
'points':points
|
'points':points
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
return polygons
|
return polygons
|
||||||
|
|
||||||
|
|
||||||
def coursetokml(course):
|
def coursetokml(course):
|
||||||
top = Element('kml')
|
top = Element('kml')
|
||||||
|
for prefix, uri in xmlns_uris_dict.items():
|
||||||
|
if prefix != '':
|
||||||
|
top.attrib['xmlns:' + prefix] = uri
|
||||||
|
else:
|
||||||
|
top.attrib['xmlns'] = uri
|
||||||
|
|
||||||
document = SubElement(top,'Document')
|
document = SubElement(top,'Document')
|
||||||
name = SubElement(document, 'name')
|
name = SubElement(document, 'name')
|
||||||
name.text = 'Courses.kml'
|
name.text = 'Courses.kml'
|
||||||
|
|||||||
@@ -1,3 +1,169 @@
|
|||||||
#from __future__ import print_function
|
#from __future__ import print_function
|
||||||
from statements import *
|
from statements import *
|
||||||
nu = datetime.datetime.now()
|
nu = datetime.datetime.now()
|
||||||
|
|
||||||
|
@override_settings(TESTING=True)
|
||||||
|
class VirtualEventViewTest(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
# Main User
|
||||||
|
self.u = UserFactory()
|
||||||
|
|
||||||
|
self.r = Rower.objects.create(user=self.u,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='coach')
|
||||||
|
|
||||||
|
self.c = Client
|
||||||
|
|
||||||
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.u.set_password(self.password)
|
||||||
|
self.u.save()
|
||||||
|
|
||||||
|
# Piet
|
||||||
|
self.upiet = UserFactory()
|
||||||
|
|
||||||
|
self.rpiet = Rower.objects.create(user=self.u,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='basic')
|
||||||
|
|
||||||
|
self.piet_workouts = WorkoutFactory.create_batch(5, user=self.rpiet)
|
||||||
|
self.passwordpiet = faker.word()
|
||||||
|
self.upiet.set_password(self.passwordpiet)
|
||||||
|
self.upiet.save()
|
||||||
|
|
||||||
|
# Klaas
|
||||||
|
self.uklaas = UserFactory()
|
||||||
|
|
||||||
|
self.rklaas = Rower.objects.create(user=self.u,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='basic')
|
||||||
|
|
||||||
|
self.klaas_workouts = WorkoutFactory.create_batch(5, user=self.rklaas)
|
||||||
|
self.passwordklaas = faker.word()
|
||||||
|
self.uklaas.set_password(self.passwordklaas)
|
||||||
|
self.uklaas.save()
|
||||||
|
|
||||||
|
# Henk
|
||||||
|
self.uhenk = UserFactory()
|
||||||
|
|
||||||
|
self.rhenk = Rower.objects.create(user=self.u,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='basic')
|
||||||
|
|
||||||
|
self.henk_workouts = WorkoutFactory.create_batch(5, user=self.rhenk)
|
||||||
|
self.passwordhenk = faker.word()
|
||||||
|
self.uhenk.set_password(self.passwordhenk)
|
||||||
|
self.uhenk.save()
|
||||||
|
|
||||||
|
# a few handy dates
|
||||||
|
yesterday = nu-datetime.timedelta(days=1)
|
||||||
|
tomorrow = nu+datetime.timedelta(days=1)
|
||||||
|
nextweek = nu+datetime.timedelta(days=7)
|
||||||
|
lastweek = nu-datetime.timedelta(days=7)
|
||||||
|
|
||||||
|
# erg races
|
||||||
|
self.openergrace = VirtualRace.objects.create(
|
||||||
|
name = faker.word(),
|
||||||
|
startdate = tomorrow.date(),
|
||||||
|
endddate = nextweek.date(),
|
||||||
|
start_time = nu.time(),
|
||||||
|
end_time = nu.time(),
|
||||||
|
preferreddate = tomorrow.date(),
|
||||||
|
comment = faker.text(),
|
||||||
|
sessiontype = 'indoorrace',
|
||||||
|
sessionunit = 'm',
|
||||||
|
sessionmode = 'distance',
|
||||||
|
sessionvalue = 1000,
|
||||||
|
course = None,
|
||||||
|
timezone = 'UTC',
|
||||||
|
evaluation_closure = nextweek,
|
||||||
|
registration_closure = tomorrow,
|
||||||
|
country = 'Indoor',
|
||||||
|
manager = self.u
|
||||||
|
)
|
||||||
|
|
||||||
|
self.submitergrace = VirtualRace.objects.create(
|
||||||
|
name = faker.word(),
|
||||||
|
startdate = yesterday.date(),
|
||||||
|
endddate = nextweek.date(),
|
||||||
|
start_time = nu.time(),
|
||||||
|
end_time = nu.time(),
|
||||||
|
preferreddate = tomorrow.date(),
|
||||||
|
comment = faker.text(),
|
||||||
|
sessiontype = 'indoorrace',
|
||||||
|
sessionunit = 'm',
|
||||||
|
sessionmode = 'distance',
|
||||||
|
sessionvalue = 1000,
|
||||||
|
course = None,
|
||||||
|
timezone = 'UTC',
|
||||||
|
evaluation_closure = nextweek,
|
||||||
|
registration_closure = tomorrow,
|
||||||
|
country = 'Indoor',
|
||||||
|
manager = self.u
|
||||||
|
)
|
||||||
|
|
||||||
|
# register Piet for submitergrace
|
||||||
|
record = IndoorVirtualRaceResult.create(
|
||||||
|
userid = self.rpiet.id,
|
||||||
|
teamname = faker.word(),
|
||||||
|
race = self.submitergrace,
|
||||||
|
username = u'{f} {l}'.format(
|
||||||
|
f = self.upiet.first_name,
|
||||||
|
l = self.upiet.last_name
|
||||||
|
),
|
||||||
|
weightcategory='hwt',
|
||||||
|
adaptiveclass=None,
|
||||||
|
duration=datetime.time(0,0),
|
||||||
|
boatclass='rower',
|
||||||
|
coursecompleted=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = add_rower_race(self.rpiet,self.submitergrace)
|
||||||
|
|
||||||
|
# register Henk for submitergrace
|
||||||
|
record = IndoorVirtualRaceResult.create(
|
||||||
|
userid = self.rhenk.id,
|
||||||
|
teamname = faker.word(),
|
||||||
|
race = self.submitergrace,
|
||||||
|
username = u'{f} {l}'.format(
|
||||||
|
f = self.uhenk.first_name,
|
||||||
|
l = self.uhenk.last_name
|
||||||
|
),
|
||||||
|
weightcategory='hwt',
|
||||||
|
adaptiveclass=None,
|
||||||
|
duration=datetime.time(0,0),
|
||||||
|
boatclass='rower',
|
||||||
|
coursecompleted=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = add_rower_race(self.rhenk,self.submitergrace)
|
||||||
|
|
||||||
|
|
||||||
|
# otw races
|
||||||
|
# course
|
||||||
|
# race,with entrants, open for submission
|
||||||
|
|
||||||
|
|
||||||
|
workouts
|
||||||
|
OTW matching course
|
||||||
|
OTW not matching course
|
||||||
|
OTE 1k
|
||||||
|
OTE different
|
||||||
|
Scenarios
|
||||||
|
races page
|
||||||
|
set up new OTE race
|
||||||
|
set up new otw race
|
||||||
|
register
|
||||||
|
withdraw
|
||||||
|
add boat (OTW)
|
||||||
|
submit result (OTE)
|
||||||
|
submit result (OTW)
|
||||||
|
standalone
|
||||||
|
calculate course adherence
|
||||||
|
other background jobs
|
||||||
|
|
||||||
|
|||||||
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
@@ -437,6 +437,7 @@ def course_upload_view(request):
|
|||||||
|
|
||||||
cs = courses.kmltocourse(path_and_filename)
|
cs = courses.kmltocourse(path_and_filename)
|
||||||
|
|
||||||
|
|
||||||
for course in cs:
|
for course in cs:
|
||||||
cname = name+' - '+course['name']
|
cname = name+' - '+course['name']
|
||||||
cnotes = notes+'\n\n'+course['description']
|
cnotes = notes+'\n\n'+course['description']
|
||||||
|
|||||||
Reference in New Issue
Block a user