diff --git a/rowers/models.py b/rowers/models.py index 6510f4dd..efeb24b2 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1810,6 +1810,11 @@ class WorkoutForm(ModelForm): self.fields['private'] = forms.BooleanField(initial=False, required=False, label='Private') + + self.fields['timezone'] = forms.ChoiceField( + choices = [(x,x) for x in pytz.common_timezones] + ) + if 'instance' in kwargs: if kwargs['instance'].privacy == 'visible': self.fields['private'].initial = False diff --git a/rowers/views.py b/rowers/views.py index 42b22d0d..3aebd6f2 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -6,6 +6,7 @@ import zipfile import bleach import arrow import pytz +from pytz import UnknownTimeZoneError import operator import warnings import urllib @@ -9333,17 +9334,23 @@ def workout_edit_view(request,id=0,message="",successmessage=""): date,starttime ) - startdatetime = pytz.timezone(thetimezone).localize( - startdatetime + try: + startdatetime = pytz.timezone(thetimezone).localize( + startdatetime ) + except UnknownTimeZoneError: + pass try: # aware object can be in any timezone out = startdatetime.astimezone(pytz.utc) except (ValueError, TypeError): startdatetime = timezone.make_aware(startdatetime) - - startdatetime = startdatetime.astimezone(pytz.timezone(thetimezone)) + + try: + startdatetime = startdatetime.astimezone(pytz.timezone(thetimezone)) + except UnknownTimeZoneError: + thetimezone = 'UTC' # check if user is owner of this workout