]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Final and complete fix for #148.
authorPedro Algarvio <pedro@algarvio.me>
Thu, 18 Dec 2008 01:36:14 +0000 (01:36 +0000)
committerPedro Algarvio <pedro@algarvio.me>
Thu, 18 Dec 2008 01:36:14 +0000 (01:36 +0000)
babel/messages/catalog.py
babel/messages/tests/catalog.py
babel/messages/tests/checkers.py

index 91c8600a4513054494ed26363ee85a79a18c53eb..f6327dcc1973b59dd43e219a835c82c1e84e9480 100644 (file)
@@ -356,6 +356,18 @@ class Catalog(object):
                                                int(tzoffset[2:]))
                 dt = datetime.fromtimestamp(ts)
                 self.creation_date = dt.replace(tzinfo=tzoffset)
+            elif name == 'po-revision-date':
+                # Keep the value if it's not the default one
+                if 'YEAR' not in value:
+                    # FIXME: this should use dates.parse_datetime as soon as
+                    #        that is ready
+                    value, tzoffset, _ = re.split('[+-](\d{4})$', value, 1)
+                    tt = time.strptime(value, '%Y-%m-%d %H:%M')
+                    ts = time.mktime(tt)
+                    tzoffset = FixedOffsetTimezone(int(tzoffset[:2]) * 60 +
+                                                   int(tzoffset[2:]))
+                    dt = datetime.fromtimestamp(ts)
+                    self.revision_date = dt.replace(tzinfo=tzoffset)
 
     mime_headers = property(_get_mime_headers, _set_mime_headers, doc="""\
     The MIME headers of the catalog, used for the special ``msgid ""`` entry.
index 78fc85c9a7d7080a953e3acff8e766c4e9d367a3..586ae283b9a83f10de79cbabb332e6cb5fb966aa 100644 (file)
@@ -240,6 +240,21 @@ class CatalogTestCase(unittest.TestCase):
         localized_catalog.update(template)
         self.assertEqual(template.creation_date,
                          localized_catalog.creation_date)
+        
+    def test_update_po_keeps_po_revision_date(self):
+        template = catalog.Catalog()
+        localized_catalog = copy.deepcopy(template)
+        localized_catalog.locale = 'de_DE'
+        fake_rev_date = datetime.datetime.now() - datetime.timedelta(days=5)
+        localized_catalog.revision_date = fake_rev_date
+        self.assertNotEqual(template.mime_headers,
+                            localized_catalog.mime_headers)
+        self.assertEqual(template.creation_date,
+                         localized_catalog.creation_date)
+        template.creation_date = datetime.datetime.now() - \
+                                                datetime.timedelta(minutes=5)
+        localized_catalog.update(template)
+        self.assertEqual(localized_catalog.revision_date, fake_rev_date)
 
 
 def suite():
index c50fd92f7ed9ea3c7a937d8afc3b12bc86d69716..b009a5e615c4e9e1e5734bdea389deb639cfd2a8 100644 (file)
@@ -98,7 +98,7 @@ msgstr[0] ""
                 locale = Locale(_locale)
                 date = format_datetime(datetime.now(LOCALTZ),
                                        'yyyy-MM-dd HH:mmZ',
-                                       tzinfo=LOCALTZ, locale=_locale),
+                                       tzinfo=LOCALTZ, locale=_locale)
             except UnknownLocaleError:
                 # Just an alias? Not what we're testing here, let's continue
                 continue