changeset 422:3dd226bb3ec3

Final and complete fix for #148.
author palgarvio
date Thu, 18 Dec 2008 01:36:14 +0000
parents 14bebc7817eb
children 8f91314df0b9
files babel/messages/catalog.py babel/messages/tests/catalog.py babel/messages/tests/checkers.py
diffstat 3 files changed, 28 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/babel/messages/catalog.py
+++ b/babel/messages/catalog.py
@@ -356,6 +356,18 @@
                                                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.
--- a/babel/messages/tests/catalog.py
+++ b/babel/messages/tests/catalog.py
@@ -240,6 +240,21 @@
         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():
--- a/babel/messages/tests/checkers.py
+++ b/babel/messages/tests/checkers.py
@@ -98,7 +98,7 @@
                 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
Copyright (C) 2012-2017 Edgewall Software