NewsBlur/vendor/timezones/forms.py
2011-04-11 21:57:45 -04:00

31 lines
1 KiB
Python
Executable file

from django import forms
from django.conf import settings
import pytz
from vendor.timezones import zones
from vendor.timezones.utilities import adjust_datetime_to_timezone, coerce_timezone_value
class TimeZoneField(forms.TypedChoiceField):
def __init__(self, *args, **kwargs):
if not "choices" in kwargs:
kwargs["choices"] = zones.PRETTY_TIMEZONE_CHOICES
kwargs["coerce"] = coerce_timezone_value
super(TimeZoneField, self).__init__(*args, **kwargs)
class LocalizedDateTimeField(forms.DateTimeField):
"""
Converts the datetime from the user timezone to settings.TIME_ZONE.
"""
def __init__(self, timezone=None, *args, **kwargs):
super(LocalizedDateTimeField, self).__init__(*args, **kwargs)
self.timezone = timezone or settings.TIME_ZONE
def clean(self, value):
value = super(LocalizedDateTimeField, self).clean(value)
if value is None: # field was likely not required
return None
return adjust_datetime_to_timezone(value, from_tz=self.timezone)