From 32a6ecbcc582c26fa5d28a0eb16715e69e28418b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20HUBSCHER?= Date: Tue, 16 Aug 2011 15:11:49 +0200 Subject: [PATCH] Fix timezone bug for ATOM generation --- pelican/utils.py | 16 ++++++++++------ pelican/writers.py | 5 +++-- setup.py | 2 +- tools/pelican-quickstart | 2 ++ 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/pelican/utils.py b/pelican/utils.py index ed9d0566..cd7507ee 100644 --- a/pelican/utils.py +++ b/pelican/utils.py @@ -4,6 +4,7 @@ import os import shutil import time import calendar +import pytz from datetime import datetime from codecs import open as _open from itertools import groupby @@ -225,9 +226,12 @@ def files_changed(path, extensions): return True return False -def local_to_utc(t): - "Convert article time to UTC time for ATOM feeds" - secs = time.mktime(t) - gmtime = list(time.gmtime(secs)) - gmtime[8] = 1 - return datetime.fromtimestamp(time.mktime(gmtime)) +def set_date_tzinfo(d, tz_name=None): + """ Date without tzinfo shoudbe utc. + This function set the right tz to date that aren't utc and don't have tzinfo + """ + if tz_name is not None: + tz = pytz.timezone(tz_name) + return tz.localize(d) + else: + return d diff --git a/pelican/writers.py b/pelican/writers.py index 9d21b976..4dfc1ba6 100644 --- a/pelican/writers.py +++ b/pelican/writers.py @@ -7,7 +7,7 @@ from functools import partial import locale from feedgenerator import Atom1Feed, Rss201rev2Feed -from pelican.utils import get_relative_path, local_to_utc +from pelican.utils import get_relative_path, set_date_tzinfo from pelican.paginator import Paginator from pelican.log import * @@ -37,7 +37,8 @@ class Writer(object): description=item.content, categories=item.tags if hasattr(item, 'tags') else None, author_name=getattr(item, 'author', 'John Doe'), - pubdate=local_to_utc(item.date.timetuple())) + pubdate=set_date_tzinfo(item.date, + self.settings.get('TIMEZONE', None))) def write_feed(self, elements, context, filename=None, feed_type='atom'): """Generate a feed with the list of articles provided diff --git a/setup.py b/setup.py index 4574fdd6..fed1ba08 100755 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ import sys VERSION = "2.7.2" # find a better way to do so. -requires = ['feedgenerator', 'jinja2', 'pygments', 'docutils'] +requires = ['feedgenerator', 'jinja2', 'pygments', 'docutils', 'pytz'] if sys.version_info < (2,7): requires.append('argparse') diff --git a/tools/pelican-quickstart b/tools/pelican-quickstart index a946772c..e1fb4eff 100755 --- a/tools/pelican-quickstart +++ b/tools/pelican-quickstart @@ -65,6 +65,8 @@ AUTHOR = u"$author" SITENAME = u"$sitename" SITEURL = '/' +TIMEZONE = 'Europe/Paris' + DEFAULT_LANG='$lang' # Blogroll