mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-04-13 09:42:01 +00:00
31 lines
1 KiB
Python
Executable file
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)
|