diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 06e7c5bc..42f95288 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -9,6 +9,7 @@ from django.db import IntegrityError import uuid from django.conf import settings import pytz +from dateutil import parser from utils import myqueue,calculate_age,totaltime_sec_to_string import re import django_rq @@ -484,8 +485,13 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring=''): enddatestring = request.GET.get('enddate') if startdatestring and enddatestring: - startdate = dt.datetime.strptime(startdatestring,'%Y-%m-%d').date() - enddate = dt.datetime.strptime(enddatestring,'%Y-%m-%d').date() + try: + startdate = dt.datetime.strptime(startdatestring,'%Y-%m-%d').date() + enddate = dt.datetime.strptime(enddatestring,'%Y-%m-%d').date() + except ValueError: + startdate = parser.parse(startdatestring,fuzzy=True) + enddate = parser.parse(enddatestring, fuzzy=True) + return startdate,enddate daterangetester = re.compile('^(\d+-\d+-\d+)\/(\d+-\d+-\d+)') diff --git a/rowers/tests/test_plans.py b/rowers/tests/test_plans.py index 0f4fe9c6..d6d73410 100644 --- a/rowers/tests/test_plans.py +++ b/rowers/tests/test_plans.py @@ -1430,12 +1430,57 @@ class PlannedSessionsView(TestCase): self.assertTrue(login) url = '/rowers/sessions/?when={d1}/{d2}'.format( - d1=self.ps_trimp.startdate.strftime("%Y-%m%d"), - d2=self.ps_trimp.enddate.strftime("%Y-%m%d") + d1=self.ps_trimp.startdate.strftime("%Y-%m-%d"), + d2=self.ps_trimp.enddate.strftime("%Y-%m-%d") ) response = self.c.get(url) self.assertEqual(response.status_code,200) + + def test_plannedsessions_dateform_view(self): + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + url = reverse('plannedsessions_view') + + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + d1 = self.ps_trimp.startdate + d2 = self.ps_trimp.enddate + + dates = { + 'startdate': d1.strftime("%Y-%m-%d"), + 'enddate': d2.strftime("%Y-%m-%d") + } + + response = self.c.get(url, dates) + self.assertEqual(response.status_code,200) + + dates = { + 'startdate': d1.strftime("%d-%m-%Y"), + 'enddate': d2.strftime("%d-%m-%Y"), + } + + response = self.c.get(url, dates) + self.assertEqual(response.status_code,200) + + dates = { + 'startdate': d1.strftime("%d.%m.%Y"), + 'enddate': d2.strftime("%d.%m.%Y"), + } + + response = self.c.get(url, dates) + self.assertEqual(response.status_code,200) + + dates = { + 'startdate': d1.strftime("%d/%m/%Y"), + 'enddate': d2.strftime("%d/%m/%Y"), + } + + response = self.c.get(url, dates) + self.assertEqual(response.status_code,200) + def test_plannedsessions_print_view(self): login = self.c.login(username=self.u.username, password=self.password) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 9eb8f8a9..84926887 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/urls.py b/rowers/urls.py index 9d58fe3d..ca60e2cf 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -484,22 +484,30 @@ urlpatterns = [ url(r'^createplan/$',views.rower_create_trainingplan,name='rower_create_trainingplan'), url(r'^createplan/user/(?P\d+)/$',views.rower_create_trainingplan,name='rower_create_trainingplan'), url(r'^deleteplan/(?P\d+)/$',login_required( - views.TrainingPlanDelete.as_view())), + views.TrainingPlanDelete.as_view()),name='trainingplan_delete_view'), url(r'^deletemicrocycle/(?P\d+)/$',login_required( - views.MicroCycleDelete.as_view())), + views.MicroCycleDelete.as_view()),name='microcycle_delete_view'), url(r'^deletemesocycle/(?P\d+)/$',login_required( - views.MesoCycleDelete.as_view())), + views.MesoCycleDelete.as_view()),name='mesocycle_delete_view'), url(r'^deletemacrocycle/(?P\d+)/$',login_required( - views.MacroCycleDelete.as_view())), + views.MacroCycleDelete.as_view()),name='macrocycle_delete_view'), # url(r'^deleteplan/(?P\d+)/$',views.rower_delete_trainingplan), - url(r'^plan/(?P\d+)/$',views.rower_trainingplan_view), - url(r'^plan/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view), - url(r'^plan/(?P\d+)/micro/(?P\d+)/$',views.rower_trainingplan_view), - url(r'^plan/(?P\d+)/micro/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view), - url(r'^plan/(?P\d+)/meso/(?P\d+)/$',views.rower_trainingplan_view), - url(r'^plan/(?P\d+)/meso/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view), - url(r'^plan/(?P\d+)/macro/(?P\d+)/$',views.rower_trainingplan_view), - url(r'^plan/(?P\d+)/macro/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view), + url(r'^plan/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), + url(r'^plan/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), + url(r'^plan/(?P\d+)/micro/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), + url(r'^plan/(?P\d+)/micro/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), + url(r'^plan/(?P\d+)/meso/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), + url(r'^plan/(?P\d+)/meso/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), + url(r'^plan/(?P\d+)/macro/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), + url(r'^plan/(?P\d+)/macro/(?P\d+)/user/(?P\d+)/$',views.rower_trainingplan_view, + name='rower_trainingplan_view'), url(r'^macrocycle/(?P\d+)/$',login_required( views.TrainingMacroCycleUpdate.as_view()), name='macrocycle_update_view'), @@ -514,7 +522,8 @@ urlpatterns = [ url(r'^microcycle/(?P\d+)/$',login_required( views.TrainingMicroCycleUpdate.as_view()), name='microcycle_update_view'), - url(r'^deletetarget/(?P\d+)/$',views.rower_delete_trainingtarget), + url(r'^deletetarget/(?P\d+)/$',views.rower_delete_trainingtarget, + name='rower_delete_trainingtarget'), url(r'^editplan/(?P\d+)/$',login_required( views.TrainingPlanUpdate.as_view()), name='trainingplan_update_view'), @@ -522,29 +531,44 @@ urlpatterns = [ views.TrainingTargetUpdate.as_view()), name='trainingtarget_update_view'), url(r'^workout/(?P\d+)/test\_strokedata/$',views.strokedataform), - url(r'^sessions/teamcreate/user/(?P\d+)/$',views.plannedsession_teamcreate_view), + url(r'^sessions/teamcreate/user/(?P\d+)/$',views.plannedsession_teamcreate_view, + name='plannedsession_teamcreate_view'), url(r'^sessions/teamcreate/team/(?P\d+)/user/(?P\d+)/$', - views.plannedsession_teamcreate_view), - url(r'^sessions/teamcreate/$',views.plannedsession_teamcreate_view), + views.plannedsession_teamcreate_view, + name='plannedsession_teamcreate_view'), + url(r'^sessions/teamcreate/$',views.plannedsession_teamcreate_view, + name='plannedsession_teamcreate_view'), url(r'^sessions/teamcreate/team/$', - views.plannedsession_teamcreate_view), - url(r'^sessions/teamedit/(?P\d+)/$',views.plannedsession_teamedit_view), - url(r'^sessions/teamedit/(?P\d+)/user/(?P\d+)/$',views.plannedsession_teamedit_view), - url(r'^sessions/create/$',views.plannedsession_create_view), + views.plannedsession_teamcreate_view, + name='plannedsession_teamcreate_view'), + url(r'^sessions/teamedit/(?P\d+)/$',views.plannedsession_teamedit_view, + name='plannedsession_teamedit_view'), + url(r'^sessions/teamedit/(?P\d+)/user/(?P\d+)/$', + views.plannedsession_teamedit_view, + name='plannedsession_teamedit_view'), + url(r'^sessions/create/$',views.plannedsession_create_view, + name='plannedsession_create_view'), url(r'^sessions/create/user/(?P\d+)/$', - views.plannedsession_create_view), + views.plannedsession_create_view, + name='plannedsession_create_view'), url(r'^sessions/create/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/$', - views.plannedsession_create_view), + views.plannedsession_create_view, + name='plannedsession_create_view'), url(r'^sessions/create/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/user/(?P\d+)/$', - views.plannedsession_create_view), + views.plannedsession_create_view, + name='plannedsession_create_view'), url(r'^sessions/multiclone/$',views.plannedsession_multiclone_view), url(r'^sessions/multiclone/user/(?P\d+)/$', - views.plannedsession_multiclone_view), - url(r'^sessions/multicreate/$',views.plannedsession_multicreate_view), + views.plannedsession_multiclone_view, + name='plannedsession_multiclone_view'), + url(r'^sessions/multicreate/$',views.plannedsession_multicreate_view, + name='plannedsession_multicreate_view'), url(r'^sessions/multicreate/user/(?P\d+)/extra/(?P\d+)/$', - views.plannedsession_multicreate_view), + views.plannedsession_multicreate_view, + name='plannedsession_multicreate_view'), url(r'^sessions/multicreate/user/(?P\d+)/$', - views.plannedsession_multicreate_view), + views.plannedsession_multicreate_view, + name='plannedsession_multicreate_view'), url(r'^sessions/(?P\d+)/edit/$',views.plannedsession_edit_view), url(r'^sessions/(?P\d+)/compare/$', views.plannedsession_compare_view, @@ -567,25 +591,39 @@ urlpatterns = [ views.PlannedSessionDelete.as_view()), name='plannedsession_delete_view'), url(r'^sessions/manage/session/(?P\d+)/$', - views.plannedsessions_manage_view), + views.plannedsessions_manage_view, + name='plannedsessions_manage_view'), url(r'^sessions/manage/session/(?P\d+)/user/(?P\d+)/$', - views.plannedsessions_manage_view), + views.plannedsessions_manage_view, + name='plannedsessions_manage_view'), url(r'^sessions/manage/?/$', - views.plannedsessions_manage_view), + views.plannedsessions_manage_view, + name='plannedsessions_manage_view'), url(r'^sessions/manage/user/(?P\d+)/$', - views.plannedsessions_manage_view), - url(r'^sessions/coach/$',views.plannedsessions_coach_view), - url(r'^sessions/coach/user/\d+/$',views.plannedsessions_coach_view), - url(r'^sessions/print/?/$',views.plannedsessions_print_view), - url(r'^sessions/print/user/(?P\d+)/$',views.plannedsessions_print_view), - url(r'^sessions/sendcalendar/$',views.plannedsessions_icsemail_view), - url(r'^sessions/sendcalendar/user/(?P\d+)/$',views.plannedsessions_icsemail_view), - url(r'^sessions/$',views.plannedsessions_view), - url(r'^sessions/user/(?P\d+)/$',views.plannedsessions_view), + views.plannedsessions_manage_view, + name='plannedsessions_manage_view'), + url(r'^sessions/coach/$',views.plannedsessions_coach_view, + name='plannedsessions_coach_view'), + url(r'^sessions/coach/user/\d+/$',views.plannedsessions_coach_view, + name='plannedsessions_coach_view'), + url(r'^sessions/print/?/$',views.plannedsessions_print_view, + name='plannedsessions_print_view'), + url(r'^sessions/print/user/(?P\d+)/$',views.plannedsessions_print_view, + name='plannedsessions_print_view'), + url(r'^sessions/sendcalendar/$',views.plannedsessions_icsemail_view, + name='plannedsessions_icsemail_view'), + url(r'^sessions/sendcalendar/user/(?P\d+)/$',views.plannedsessions_icsemail_view, + name='plannedsessions_icsemail_view'), + url(r'^sessions/$',views.plannedsessions_view, + name='plannedsessions_view'), + url(r'^sessions/user/(?P\d+)/$',views.plannedsessions_view, + name='plannedsessions_view'), url(r'^sessions/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/$', - views.plannedsessions_view), + views.plannedsessions_view, + name='plannedsessions_view'), url(r'^sessions/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/user/(?P\d+)/$', - views.plannedsessions_view), + views.plannedsessions_view, + name='plannedsessions_view'), url(r'^courses/(?P\d+)/edit/$',views.course_edit_view, name='course_edit_view'), url(r'^courses/(?P\d+)/delete/$',views.course_delete_view),