14930: Don't ignore DST settings.
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 10 Jun 2019 22:44:47 +0000 (19:44 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 10 Jun 2019 22:44:47 +0000 (19:44 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

sdk/python/arvados/commands/put.py
sdk/python/tests/test_arv_put.py

index 4b04ad229e26f50042d5699659bd9ab2f6121623..5773cb4f98792354c671a3cfb3ecb90f7f92f0f9 100644 (file)
@@ -1142,7 +1142,10 @@ def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr,
                 utcoffset = -trash_at.utcoffset()
             else:
                 # Timezone naive datetime provided. Assume is local.
-                utcoffset = datetime.timedelta(seconds=time.timezone)
+                if time.daylight:
+                    utcoffset = datetime.timedelta(seconds=time.altzone)
+                else:
+                    utcoffset = datetime.timedelta(seconds=time.timezone)
             # Convert to UTC timezone naive datetime.
             trash_at = trash_at.replace(tzinfo=None) + utcoffset
 
@@ -1316,7 +1319,10 @@ def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr,
             expiration_notice = ""
             if writer.collection_trash_at() is not None:
                 # Get the local timezone-naive version, and log it with timezone information.
-                local_trash_at = writer.collection_trash_at().replace(tzinfo=None) - datetime.timedelta(seconds=time.timezone)
+                if time.daylight:
+                    local_trash_at = writer.collection_trash_at().replace(tzinfo=None) - datetime.timedelta(seconds=time.altzone)
+                else:
+                    local_trash_at = writer.collection_trash_at().replace(tzinfo=None) - datetime.timedelta(seconds=time.timezone)
                 expiration_notice = ". It will expire on {} {}.".format(
                     local_trash_at.strftime("%Y-%m-%d %H:%M:%S"), time.strftime("%z"))
             if args.update_collection:
index d27ac9be070632b30bf34d7d87b6e500d476abed..42adf2450d2d5a16cd499f342c3f2f243eefdb75 100644 (file)
@@ -1198,11 +1198,15 @@ class ArvPutIntegrationTest(run_test_server.TestCaseWithServers,
             ['--no-progress', '--trash-at', trash_at, tmpdir])
         self.assertNotEqual(None, col['uuid'])
         c = arv_put.api_client.collections().get(uuid=col['uuid']).execute()
+        if time.daylight:
+            offset = datetime.timedelta(seconds=time.altzone)
+        else:
+            offset = datetime.timedelta(seconds=time.timezone)
         self.assertEqual(
-            ciso8601.parse_datetime(trash_at) + datetime.timedelta(seconds=time.timezone),
+            ciso8601.parse_datetime(trash_at) + offset,
             ciso8601.parse_datetime(c['trash_at']).replace(tzinfo=None))
 
-    def test_put_collection_with_timezone_expiring_date_only(self):
+    def test_put_collection_with_expiring_date_only(self):
         tmpdir = self.make_tmpdir()
         trash_at = '2140-01-01'
         end_of_day = datetime.timedelta(hours=23, minutes=59, seconds=59)
@@ -1213,8 +1217,12 @@ class ArvPutIntegrationTest(run_test_server.TestCaseWithServers,
             ['--no-progress', '--trash-at', trash_at, tmpdir])
         self.assertNotEqual(None, col['uuid'])
         c = arv_put.api_client.collections().get(uuid=col['uuid']).execute()
+        if time.daylight:
+            offset = datetime.timedelta(seconds=time.altzone)
+        else:
+            offset = datetime.timedelta(seconds=time.timezone)
         self.assertEqual(
-            ciso8601.parse_datetime(trash_at) + end_of_day + datetime.timedelta(seconds=time.timezone),
+            ciso8601.parse_datetime(trash_at) + end_of_day + offset,
             ciso8601.parse_datetime(c['trash_at']).replace(tzinfo=None))
 
     def test_put_collection_with_invalid_absolute_expiring_datetimes(self):