Пример #1
0
 def test_convert_input_to_current_timezone(self):
     post_data = {'a': ['2013-09-24 00:00:00']}
     form = self.F(DummyPostData(post_data))
     self.assertTrue(form.validate())
     date = form.data['a']
     assert date.tzinfo
     self.assertEqual(
         timezone._get_timezone_name(date.tzinfo),
         timezone._get_timezone_name(timezone.get_current_timezone()))
Пример #2
0
 def test_convert_input_to_current_timezone(self):
     post_data = {'a': ['2013-09-24 00:00:00']}
     form = self.F(DummyPostData(post_data))
     self.assertTrue(form.validate())
     date = form.data['a']
     assert date.tzinfo
     self.assertEqual(
         timezone._get_timezone_name(date.tzinfo),
         timezone._get_timezone_name(timezone.get_current_timezone()))
Пример #3
0
 def test_convert_input_to_current_timezone(self):
     if not has_timezone:
         return
     post_data = {"a": ["2013-09-24 00:00:00"]}
     form = self.F(DummyPostData(post_data))
     self.assertTrue(form.validate())
     date = form.data["a"]
     assert date.tzinfo
     self.assertEquals(
         timezone._get_timezone_name(date.tzinfo),
         timezone._get_timezone_name(timezone.get_current_timezone()),
     )
Пример #4
0
 def test_convert_input_to_current_timezone(self):
     if not has_timezone:
         return
     post_data = {"a": ["2013-09-24 00:00:00"]}
     form = self.F(DummyPostData(post_data))
     self.assertTrue(form.validate())
     date = form.data["a"]
     assert date.tzinfo
     self.assertEquals(
         timezone._get_timezone_name(date.tzinfo),
         timezone._get_timezone_name(timezone.get_current_timezone()),
     )
Пример #5
0
 def on_instance_bound(self):
     super().on_instance_bound()
     if not self.form:
         # wait for the form to be set, it will eventually be
         return
     localTZ = timezone.get_current_timezone()
     localTZName = timezone._get_timezone_name(localTZ)
     myTZ = getattr(self.instance, "tz", localTZ)
     myTZName = timezone._get_timezone_name(myTZ)
     if myTZName != localTZName:
         self.exceptionTZ = myTZName
     else:
         self.exceptionTZ = None
Пример #6
0
    def test_get_timezone_name(self):
        """
        The _get_timezone_name() helper must return the offset for fixed offset
        timezones, for usage with Trunc DB functions.

        The datetime.timezone examples show the current behavior.
        """
        tests = [
            # datetime.timezone, fixed offset with and without `name`.
            (datetime.timezone(datetime.timedelta(hours=10)), 'UTC+10:00'),
            (datetime.timezone(datetime.timedelta(hours=10),
                               name='Etc/GMT-10'), 'Etc/GMT-10'),
            # pytz, named and fixed offset.
            (pytz.timezone('Europe/Madrid'), 'Europe/Madrid'),
            (pytz.timezone('Etc/GMT-10'), '+10'),
        ]
        if HAS_ZONEINFO:
            tests += [
                # zoneinfo, named and fixed offset.
                (zoneinfo.ZoneInfo('Europe/Madrid'), 'Europe/Madrid'),
                (zoneinfo.ZoneInfo('Etc/GMT-10'), '+10'),
            ]
        for tz, expected in tests:
            with self.subTest(tz=tz, expected=expected):
                self.assertEqual(timezone._get_timezone_name(tz), expected)
Пример #7
0
 def on_instance_bound(self):
     super().on_instance_bound()
     widget = self.bound_field.field.widget
     widget.overrides_repeat = self.instance.overrides_repeat
     tz = timezone._get_timezone_name(self.instance.tz)
     if tz != timezone.get_current_timezone_name():
         self.exceptionTZ = tz
     else:
         self.exceptionTZ = None
Пример #8
0
 def __init__(self, lookup, lookup_type, tzinfo):
     super(DateTime, self).__init__(output_field=fields.DateTimeField())
     self.lookup = lookup
     self.col = None
     self.lookup_type = lookup_type
     if tzinfo is None:
         self.tzname = None
     else:
         self.tzname = timezone._get_timezone_name(tzinfo)
     self.tzinfo = tzinfo
Пример #9
0
 def __init__(self, lookup, lookup_type, tzinfo):
     super(DateTime, self).__init__(output_field=fields.DateTimeField())
     self.lookup = lookup
     self.col = None
     self.lookup_type = lookup_type
     if tzinfo is None:
         self.tzname = None
     else:
         self.tzname = timezone._get_timezone_name(tzinfo)
     self.tzinfo = tzinfo
Пример #10
0
 def get_tzname(self):
     # Timezone conversions must happen to the input datetime *before*
     # applying a function. 2015-12-31 23:00:00 -02:00 is stored in the
     # database as 2016-01-01 01:00:00 +00:00. Any results should be
     # based on the input datetime not the stored datetime.
     tzname = None
     if settings.USE_TZ:
         if self.tzinfo is None:
             tzname = timezone.get_current_timezone_name()
         else:
             tzname = timezone._get_timezone_name(self.tzinfo)
     return tzname
Пример #11
0
 def get_tzname(self):
     # Timezone conversions must happen to the input datetime *before*
     # applying a function. 2015-12-31 23:00:00 -02:00 is stored in the
     # database as 2016-01-01 01:00:00 +00:00. Any results should be
     # based on the input datetime not the stored datetime.
     tzname = None
     if settings.USE_TZ:
         if self.tzinfo is None:
             tzname = timezone.get_current_timezone_name()
         else:
             tzname = timezone._get_timezone_name(self.tzinfo)
     return tzname
Пример #12
0
 def on_instance_bound(self):
     super().on_instance_bound()
     if not self.form:
         # wait for the form to be set, it will eventually be
         return
     if not self.instance.overrides:
         return
     widget = self.form[self.field_name].field.widget
     widget.overrides_repeat = self.instance.overrides_repeat
     tz = timezone._get_timezone_name(self.instance.tz)
     if tz != timezone.get_current_timezone_name():
         self.exceptionTZ = tz
     else:
         self.exceptionTZ = None
Пример #13
0
 def _get_select(self, col, lookup_type):
     if self.tzinfo is None:
         tzname = None
     else:
         tzname = timezone._get_timezone_name(self.tzinfo)
     return DateTime(col, lookup_type, tzname)
Пример #14
0
 def _get_select(self, col, lookup_type):
     if self.tzinfo is None:
         tzname = None
     else:
         tzname = timezone._get_timezone_name(self.tzinfo)
     return DateTime(col, lookup_type, tzname)
Пример #15
0

class TimezoneMixin:
    tzinfo = None

    def get_tzname(self):
        # Timezone conversions must happen to the input datetime *before*
        # applying a function. 2015-12-31 23:00:00 -02:00 is stored in the
        # database as 2016-01-01 01:00:00 +00:00. Any results should be
        # based on the input datetime not the stored datetime.
        tzname = None
        if settings.USE_TZ:
            if self.tzinfo is None:
                tzname = timezone.get_current_timezone_name()
            else:
                tzname = timezone._get_timezone_name(self.tzinfo)
        return tzname


class Extract(TimezoneMixin, Transform):
    lookup_name = None
    output_field = IntegerField()

    def __init__(self, expression, lookup_name=None, tzinfo=None, **extra):
        if self.lookup_name is None:
            self.lookup_name = lookup_name
        if self.lookup_name is None:
            raise ValueError('lookup_name must be provided')
        self.tzinfo = tzinfo
        super().__init__(expression, **extra)