Browse Source

Accepted None in tzname().

This is required by the tzinfo API, see Python's docs.

Also made _get_timezone_name deterministic.
Aymeric Augustin 12 years ago
parent
commit
5a3d9490f1
2 changed files with 5 additions and 5 deletions
  1. 3 3
      django/utils/timezone.py
  2. 2 2
      django/utils/tzinfo.py

+ 3 - 3
django/utils/timezone.py

@@ -80,7 +80,8 @@ class LocalTimezone(tzinfo):
             return ZERO
 
     def tzname(self, dt):
-        return _time.tzname[self._isdst(dt)]
+        is_dst = False if dt is None else self._isdst(dt)
+        return _time.tzname[is_dst]
 
     def _isdst(self, dt):
         tt = (dt.year, dt.month, dt.day,
@@ -145,8 +146,7 @@ def _get_timezone_name(timezone):
         return timezone.zone
     except AttributeError:
         # for regular tzinfo objects
-        local_now = datetime.now(timezone)
-        return timezone.tzname(local_now)
+        return timezone.tzname(None)
 
 # Timezone selection functions.
 

+ 2 - 2
django/utils/tzinfo.py

@@ -71,9 +71,9 @@ class LocalTimezone(tzinfo):
             return timedelta(0)
 
     def tzname(self, dt):
+        is_dst = False if dt is None else self._isdst(dt)
         try:
-            return force_text(time.tzname[self._isdst(dt)],
-                                 DEFAULT_LOCALE_ENCODING)
+            return force_text(time.tzname[is_dst], DEFAULT_LOCALE_ENCODING)
         except UnicodeDecodeError:
             return None