diff --git a/rowers/courses.py b/rowers/courses.py index 25e87620..606e9471 100644 --- a/rowers/courses.py +++ b/rowers/courses.py @@ -33,6 +33,11 @@ from rowers.utils import geo_distance 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 ( Rower, Workout, @@ -91,11 +96,18 @@ def get_polygons(polygonpms): 'points':points }) + return polygons def coursetokml(course): 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') name = SubElement(document, 'name') name.text = 'Courses.kml' diff --git a/rowers/tests/test_aavirtualevents.py b/rowers/tests/test_aavirtualevents.py index de2fce3d..93c046d4 100644 --- a/rowers/tests/test_aavirtualevents.py +++ b/rowers/tests/test_aavirtualevents.py @@ -1,3 +1,169 @@ #from __future__ import print_function from statements import * 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 + diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index c4f8dc47..c2095809 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index a82a6d17..0425a88c 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -437,6 +437,7 @@ def course_upload_view(request): cs = courses.kmltocourse(path_and_filename) + for course in cs: cname = name+' - '+course['name'] cnotes = notes+'\n\n'+course['description']