# HG changeset patch # User jruigrok # Date 1270974752 0 # Node ID 1dd3592c6159b291a019951cad12f07c6493d303 # Parent ee0b9aa340df0ccbfbbe2a9e3e64a4588b83ac4b Merged revisions 464 via svnmerge from http://svn.edgewall.org/repos/babel/trunk ........ r464 | palgarvio | 2008-12-18 02:36:14 +0100 (do, 18 dec 2008) | 2 lines Final and complete fix for #148. ........ diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ POT-Creation-Date of the template used to update (ticket #148). * Use a more explicit error message if no option or argument (command) is passed to pybabel (ticket #81). + * Keep the PO-Revision-Date if it is not the default value (ticket #148). Version 0.9.5 diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -358,6 +358,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. diff --git a/babel/messages/tests/catalog.py b/babel/messages/tests/catalog.py --- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -223,6 +223,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(): suite = unittest.TestSuite() diff --git a/babel/messages/tests/checkers.py b/babel/messages/tests/checkers.py --- 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