diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 794edec3..33f70b50 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -5,7 +5,7 @@ from rowingdata import rowingdata as rrdata from rowers.tasks import handle_sendemail_unrecognized from rowers.tasks import handle_zip_file - +import pytz from rowingdata import rower as rrower from rowingdata import main as rmain @@ -49,6 +49,8 @@ import datautils from utils import lbstoN from scipy.interpolate import griddata +from timezonefinder import TimezoneFinder + import django_rq queue = django_rq.get_queue('default') queuelow = django_rq.get_queue('low') @@ -566,13 +568,46 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', #summary += '\n' #summary += row.intervalstats() - workoutdate = row.rowdatetime.strftime('%Y-%m-%d') - workoutstarttime = row.rowdatetime.strftime('%H:%M:%S') + + #workoutstartdatetime = row.rowdatetime + timezone_str = 'UTC' try: - workoutstartdatetime = thetimezone.localize(row.rowdatetime).astimezone(utc) + workoutstartdatetime = timezone.make_aware(row.rowdatetime) except ValueError: workoutstartdatetime = row.rowdatetime + + + try: + latavg = row.df[' latitude'].mean() + lonavg = row.df[' longitude'].mean() + tf = TimezoneFinder() + timezone_str = tf.timezone_at(lng=lonavg,lat=latavg) + if timezone_str == None: + timezone_str = tf.closest_timezone_at(lng=lonavg, + lat=latavg) + if timezone_str == None: + timezone_str = 'UTC' + try: + workoutstartdatetime = pytz.timezone(timezone_str).localize( + row.rowdatetime + ) + except ValueError: + workoutstartdatetime = workoutstartdatetime.astimezone( + pytz.timezone(timezone_str) + ) + except KeyError: + timezone_str = 'UTC' + + + + workoutdate = workoutstartdatetime.astimezone( + pytz.timezone(timezone_str) + ).strftime('%Y-%m-%d') + workoutstarttime = workoutstartdatetime.astimezone( + pytz.timezone(timezone_str) + ).strftime('%H:%M:%S') + if makeprivate: privacy = 'hidden' else: @@ -603,6 +638,7 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', maxhr=maxhr,averagehr=averagehr, startdatetime=workoutstartdatetime, inboard=inboard,oarlength=oarlength, + timezone=timezone_str, privacy=privacy) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 408f6ab2..71674fbb 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -729,6 +729,8 @@ def leaflet_chart(lat,lon,name=""): id: 'mapbox.outdoors' }}); + + var mymap = L.map('map_canvas', {{ center: [{latmean}, {lonmean}], zoom: 13, @@ -777,6 +779,111 @@ def leaflet_chart(lat,lon,name=""): + return script,div + +def leaflet_chart2(lat,lon,name=""): + if lat.empty or lon.empty: + return [0,"invalid coordinate data"] + + latmean = lat.mean() + lonmean = lon.mean() + latbegin = lat[lat.index[0]] + longbegin = lon[lon.index[0]] + latend = lat[lat.index[-1]] + longend = lon[lon.index[-1]] + + coordinates = zip(lat,lon) + + scoordinates = "[" + + for x,y in coordinates: + scoordinates += """[{x},{y}], + """.format( + x=x, + y=y + ) + + scoordinates += "]" + + script = """ + + """.format( + latmean=latmean, + lonmean=lonmean, + latbegin = latbegin, + latend=latend, + longbegin=longbegin, + longend=longend, + scoordinates=scoordinates, + ) + + div = """ +
+ Local Time: {% now "jS F Y H:i" %} +
Compatible with:
diff --git a/rowers/templates/workout_form.html b/rowers/templates/workout_form.html
index 3a48dac7..bf47f4c3 100644
--- a/rowers/templates/workout_form.html
+++ b/rowers/templates/workout_form.html
@@ -2,6 +2,7 @@
{% load staticfiles %}
{% load rowerfilters %}
{% load tz %}
+{% get_current_timezone as TIME_ZONE %}
{% block title %}Change Workout {% endblock %}
@@ -42,11 +43,11 @@
| Date/Time: | {{ workout.startdatetime }} | +{% localtime on %} +Date/Time: | {{ workout.startdatetime|localtime}} | +{% endlocaltime %}
|---|---|---|---|
| Distance: | {{ workout.distance }}m | ||