Private
Public Access
1
0

removing date.today and replacing with timezone.now

This commit is contained in:
Sander Roosendaal
2021-08-09 20:30:38 +02:00
parent ef34af1770
commit 0438d3b396
5 changed files with 61 additions and 30 deletions

View File

@@ -26,6 +26,7 @@ queuehigh = django_rq.get_queue('low')
import json import json
import pandas as pd import pandas as pd
import arrow
from rowingdata import rowingdata as rrdata from rowingdata import rowingdata as rrdata
from rowingdata import rower as rrower from rowingdata import rower as rrower
@@ -350,7 +351,7 @@ def get_indoorraces(workout):
return races return races
def get_todays_micro(plan,thedate=date.today()): def get_todays_micro(plan,thedate=timezone.now()):
thismicro = None thismicro = None
thismacro = TrainingMacroCycle.objects.filter( thismacro = TrainingMacroCycle.objects.filter(
@@ -381,7 +382,7 @@ def get_todays_micro(plan,thedate=date.today()):
thismicro = thismicro[0] thismicro = thismicro[0]
else: else:
mms = TrainingMicroCycle.objects.all() mms = TrainingMicroCycle.objects.all()
return None return None
return thismicro return thismicro
@@ -619,7 +620,7 @@ cratiocolors = {
def is_session_complete_ws(ws,ps): def is_session_complete_ws(ws,ps):
ws = ws.order_by("date") ws = ws.order_by("date")
if ws.count()==0: if ws.count()==0:
today = date.today() today = timezone.now()
if today > ps.enddate: if today > ps.enddate:
verdict = 'missed' verdict = 'missed'
ratio = 0 ratio = 0
@@ -851,7 +852,7 @@ def get_team(request):
return teamid return teamid
def get_dates_timeperiod(request,startdatestring='',enddatestring='', def get_dates_timeperiod(request,startdatestring='',enddatestring='',
defaulttimeperiod='thisweek'): defaulttimeperiod='thisweek',rower=None):
# set start end date according timeperiod # set start end date according timeperiod
# should always return datetime.date # should always return datetime.date
@@ -883,40 +884,47 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring='',
startdate = enddate startdate = enddate
enddate = e enddate = e
if rower is not None:
tz = pytz.timezone(rower.defaulttimezone)
startdate = arrow.get(startdate)
enddate = arrow.get(enddate)
startdate = startdate.astimezone(tz)
enddate = enddate.astimezone(tz)
return startdate,enddate return startdate,enddate
daterangetester = re.compile('^(\d+-\d+-\d+)\/(\d+-\d+-\d+)') daterangetester = re.compile('^(\d+-\d+-\d+)\/(\d+-\d+-\d+)')
if timeperiod=='today': # pragma: no cover if timeperiod=='today': # pragma: no cover
startdate=date.today() startdate=timezone.now()
enddate=date.today() enddate=timezone.now()
elif timeperiod=='last30': elif timeperiod=='last30':
startdate = date.today()-timezone.timedelta(days=30) startdate = timezone.now()-timezone.timedelta(days=30)
enddate = date.today()+timezone.timedelta(days=1) enddate = timezone.now()+timezone.timedelta(days=1)
elif timeperiod=='tomorrow': # pragma: no cover elif timeperiod=='tomorrow': # pragma: no cover
startdate=date.today()+timezone.timedelta(days=1) startdate=timezone.now()+timezone.timedelta(days=1)
enddate=date.today()+timezone.timedelta(days=1) enddate=timezone.now()+timezone.timedelta(days=1)
elif timeperiod=='thisweek': # pragma: no cover elif timeperiod=='thisweek': # pragma: no cover
today = date.today() today = timezone.now()
startdate = date.today()-timezone.timedelta(days=today.weekday()) startdate = timezone.now()-timezone.timedelta(days=today.weekday())
enddate = startdate+timezone.timedelta(days=6) enddate = startdate+timezone.timedelta(days=6)
elif timeperiod=='thismonth': # pragma: no cover elif timeperiod=='thismonth': # pragma: no cover
today = date.today() today = timezone.now()
startdate = today.replace(day=1) startdate = today.replace(day=1)
enddate = startdate+timezone.timedelta(days=32) enddate = startdate+timezone.timedelta(days=32)
enddate = enddate.replace(day=1) enddate = enddate.replace(day=1)
enddate = enddate-timezone.timedelta(days=1) enddate = enddate-timezone.timedelta(days=1)
elif timeperiod=='lastweek': # pragma: no cover elif timeperiod=='lastweek': # pragma: no cover
today = date.today() today = timezone.now()
enddate = today-timezone.timedelta(days=today.weekday())-timezone.timedelta(days=1) enddate = today-timezone.timedelta(days=today.weekday())-timezone.timedelta(days=1)
startdate = enddate-timezone.timedelta(days=6) startdate = enddate-timezone.timedelta(days=6)
elif timeperiod=='nextweek': # pragma: no cover elif timeperiod=='nextweek': # pragma: no cover
today = date.today() today = timezone.now()
startdate = today-timezone.timedelta(days=today.weekday())+timezone.timedelta(days=7) startdate = today-timezone.timedelta(days=today.weekday())+timezone.timedelta(days=7)
enddate = startdate+timezone.timedelta(days=6) enddate = startdate+timezone.timedelta(days=6)
elif timeperiod=='lastmonth': # pragma: no cover elif timeperiod=='lastmonth': # pragma: no cover
today = date.today() today = timezone.now()
startdate = today.replace(day=1) startdate = today.replace(day=1)
startdate = startdate-timezone.timedelta(days=3) startdate = startdate-timezone.timedelta(days=3)
startdate = startdate.replace(day=1) startdate = startdate.replace(day=1)
@@ -924,7 +932,7 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring='',
enddate = enddate.replace(day=1) enddate = enddate.replace(day=1)
enddate = enddate-timezone.timedelta(days=1) enddate = enddate-timezone.timedelta(days=1)
elif timeperiod=='nextmonth': # pragma: no cover elif timeperiod=='nextmonth': # pragma: no cover
today = date.today() today = timezone.now()
startdate = today.replace(day=1) startdate = today.replace(day=1)
startdate = startdate+timezone.timedelta(days=32) startdate = startdate+timezone.timedelta(days=32)
startdate = startdate.replace(day=1) startdate = startdate.replace(day=1)
@@ -932,7 +940,7 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring='',
enddate = enddate.replace(day=1) enddate = enddate.replace(day=1)
enddate = enddate-timezone.timedelta(days=1) enddate = enddate-timezone.timedelta(days=1)
elif timeperiod=='lastyear': # pragma: no cover elif timeperiod=='lastyear': # pragma: no cover
today = date.today() today = timezone.now()
startdate = today-timezone.timedelta(days=365) startdate = today-timezone.timedelta(days=365)
enddate = today+timezone.timedelta(days=1) enddate = today+timezone.timedelta(days=1)
elif daterangetester.match(timeperiod): elif daterangetester.match(timeperiod):
@@ -946,11 +954,11 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring='',
enddate = startdate enddate = startdate
startdate = startdate2 startdate = startdate2
except ValueError: # pragma: no cover except ValueError: # pragma: no cover
startdate = date.today() startdate = timezone.now()
enddate = date.today() enddate = timezone.now()
else: else:
startdate = date.today() startdate = timezone.now()
enddate = date.today() enddate = timezone.now()
if startdatestring != '': if startdatestring != '':
@@ -965,10 +973,18 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring='',
except ParseError: except ParseError:
pass pass
if rower is not None:
startdate = arrow.get(startdate)
enddate = arrow.get(enddate)
tz = pytz.timezone(rower.defaulttimezone)
startdate = startdate.astimezone(tz)
enddate = enddate.astimezone(tz)
return startdate,enddate return startdate,enddate
def get_sessions_manager(m,teamid=0,startdate=date.today(), def get_sessions_manager(m,teamid=0,startdate=timezone.now(),
enddate=date.today()+timezone.timedelta(+1000)): enddate=timezone.now()+timezone.timedelta(+1000)):
if teamid: # pragma: no cover if teamid: # pragma: no cover
t = Team.objects.get(id=teamid) t = Team.objects.get(id=teamid)
rs = Rower.objects.filter(team__in=[t]).distinct() rs = Rower.objects.filter(team__in=[t]).distinct()
@@ -991,8 +1007,8 @@ def get_sessions_manager(m,teamid=0,startdate=date.today(),
return sps return sps
def get_sessions(r,startdate=date.today(), def get_sessions(r,startdate=timezone.now(),
enddate=date.today()+timezone.timedelta(+1000)): enddate=timezone.now()+timezone.timedelta(+1000)):
sps = PlannedSession.objects.filter( sps = PlannedSession.objects.filter(
rower__in=[r], rower__in=[r],

View File

@@ -514,6 +514,12 @@ class DataPrepTests(TestCase):
self.assertEqual(starttime,'19:55:13') self.assertEqual(starttime,'19:55:13')
self.assertEqual(startdate,'2021-06-15') self.assertEqual(startdate,'2021-06-15')
def test_calculate_age(self):
today = timezone.now()
born = today-datetime.timedelta(days=45+49*365.2425)
age = dataprep.calculate_age(born,today=today)
self.assertEqual(age,49)
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_uh) @patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_uh)
def test_goldmedalstandard(self,mocked_getsmallrowdata_uh): def test_goldmedalstandard(self,mocked_getsmallrowdata_uh):
maxvalue, delta = dataprep.calculate_goldmedalstandard(self.r,self.wuh_otw) maxvalue, delta = dataprep.calculate_goldmedalstandard(self.r,self.wuh_otw)

BIN
rowers/tests/testdata/testdata.tcx.gz vendored Normal file

Binary file not shown.

View File

@@ -347,7 +347,7 @@ from datetime import date
def calculate_age(born,today=None): def calculate_age(born,today=None):
if not today: if not today:
today = date.today() today = timezone.now()
if born: if born:
try: try:
return today.year - born.year - ((today.month, today.day) < (born.month, born.day)) return today.year - born.year - ((today.month, today.day) < (born.month, born.day))

View File

@@ -1387,7 +1387,7 @@ from rowers.plannedsessions import cratiocolors,checkscores
def plannedsessions_view(request, def plannedsessions_view(request,
userid=0,startdatestring='',enddatestring=''): userid=0,startdatestring='',enddatestring=''):
try: try:
r = getrequestplanrower(request,userid=userid) r = getrequestplanrower(request,userid=userid)
except PermissionDenied: # pragma: no cover except PermissionDenied: # pragma: no cover
@@ -1410,7 +1410,9 @@ def plannedsessions_view(request,
startdate,enddate = get_dates_timeperiod( startdate,enddate = get_dates_timeperiod(
request, request,
startdatestring=startdatestring, startdatestring=startdatestring,
enddatestring=enddatestring) enddatestring=enddatestring,
rower=r)
try: try:
trainingplan = TrainingPlan.objects.filter( trainingplan = TrainingPlan.objects.filter(
@@ -2634,7 +2636,14 @@ def rower_view_instantplan(request,id='',userid=0):
elif not request.user.is_anonymous: elif not request.user.is_anonymous:
form = InstantPlanSelectForm(targets=targets,instantplan=plan,initial={'datechoice':'startdate'}) tz = pytz.timezone(r.defaulttimezone)
nowdate = timezone.now().astimezone(tz)
initial = {
'datechoice':'startdate',
'startdate': nowdate,
'enddate': nowdate+datetime.timedelta(days=21)
}
form = InstantPlanSelectForm(targets=targets,instantplan=plan,initial=initial)
else: # pragma: no cover else: # pragma: no cover
form = None form = None