From acb65b77af76267f8056a3fb89172d3b82db7820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20HUBSCHER?= Date: Tue, 16 Aug 2011 11:40:08 +0200 Subject: [PATCH 1/3] GMT Time in ATOM feeds --- pelican/utils.py | 9 +++++++++ pelican/writers.py | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pelican/utils.py b/pelican/utils.py index 2fb76670..ed9d0566 100644 --- a/pelican/utils.py +++ b/pelican/utils.py @@ -2,6 +2,8 @@ import re import os import shutil +import time +import calendar from datetime import datetime from codecs import open as _open from itertools import groupby @@ -222,3 +224,10 @@ def files_changed(path, extensions): LAST_MTIME = mtime 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)) diff --git a/pelican/writers.py b/pelican/writers.py index 4685cff9..9d21b976 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 +from pelican.utils import get_relative_path, local_to_utc from pelican.paginator import Paginator from pelican.log import * @@ -37,7 +37,7 @@ class Writer(object): description=item.content, categories=item.tags if hasattr(item, 'tags') else None, author_name=getattr(item, 'author', 'John Doe'), - pubdate=item.date) + pubdate=local_to_utc(item.date.timetuple())) def write_feed(self, elements, context, filename=None, feed_type='atom'): """Generate a feed with the list of articles provided From 66ca61dfbbf2e66c523137ec7f05c0fd3c84d752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20HUBSCHER?= Date: Tue, 16 Aug 2011 11:47:20 +0200 Subject: [PATCH 2/3] Patch the makefile to automaticaly create the output dir if it doesn't exists, use PWD to work in different computer base_dir from scratch --- tools/pelican-quickstart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/pelican-quickstart b/tools/pelican-quickstart index fe7bb31a..a946772c 100755 --- a/tools/pelican-quickstart +++ b/tools/pelican-quickstart @@ -9,7 +9,7 @@ TEMPLATES={ PELICAN=$pelican PELICANOPTS=$pelicanopts -BASEDIR=$basedir +BASEDIR=$$(PWD) INPUTDIR=$$(BASEDIR)/src OUTPUTDIR=$$(BASEDIR)/output CONFFILE=$$(BASEDIR)/pelican.conf.py @@ -36,20 +36,21 @@ help: \t@echo ' ' -html: $$(OUTPUTDIR)/index.html +html: clean $$(OUTPUTDIR)/index.html \t@echo 'Done' $$(OUTPUTDIR)/%.html: \t$$(PELICAN) $$(INPUTDIR) -o $$(OUTPUTDIR) -s $$(CONFFILE) clean: -\trm -r $$(OUTPUTDIR)/* +\trm -fr $$(OUTPUTDIR) +\tmkdir $$(OUTPUTDIR) dropbox_upload: $$(OUTPUTDIR)/index.html \tcp -r $$(OUTPUTDIR)/* $$(DROPBOX_DIR) ssh_upload: $$(OUTPUTDIR)/index.html -\tscp -rv $$(OUTPUTDIR)/* $$(SSH_USER)@$$(SSH_HOST)/$$(SSH_TARGET_DIR) +\tscp -r $$(OUTPUTDIR)/* $$(SSH_USER)@$$(SSH_HOST):$$(SSH_TARGET_DIR) ftp_upload: $$(OUTPUTDIR)/index.html \tlftp ftp://$$(FTP_USER)@$$(FTP_HOST) -e "mirror -R $$(OUTPUT_DIR)/* $$(FTP_TARGET_DIR) ; quit" 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 3/3] 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