From: Pedro Algarvio Date: Thu, 18 Dec 2008 01:36:14 +0000 (+0000) Subject: Final and complete fix for #148. X-Git-Tag: 1.0~268 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65cbc32abbbf9dca5fe7e958ebfa04c564189130;p=thirdparty%2Fbabel.git Final and complete fix for #148. --- diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index 91c8600a..f6327dcc 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -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. diff --git a/babel/messages/tests/catalog.py b/babel/messages/tests/catalog.py index 78fc85c9..586ae283 100644 --- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -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(): diff --git a/babel/messages/tests/checkers.py b/babel/messages/tests/checkers.py index c50fd92f..b009a5e6 100644 --- a/babel/messages/tests/checkers.py +++ b/babel/messages/tests/checkers.py @@ -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