mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Fix timezone bug for ATOM generation
This commit is contained in:
parent
66ca61dfbb
commit
32a6ecbcc5
4 changed files with 16 additions and 9 deletions
|
|
@ -4,6 +4,7 @@ import os
|
||||||
import shutil
|
import shutil
|
||||||
import time
|
import time
|
||||||
import calendar
|
import calendar
|
||||||
|
import pytz
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from codecs import open as _open
|
from codecs import open as _open
|
||||||
from itertools import groupby
|
from itertools import groupby
|
||||||
|
|
@ -225,9 +226,12 @@ def files_changed(path, extensions):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def local_to_utc(t):
|
def set_date_tzinfo(d, tz_name=None):
|
||||||
"Convert article time to UTC time for ATOM feeds"
|
""" Date without tzinfo shoudbe utc.
|
||||||
secs = time.mktime(t)
|
This function set the right tz to date that aren't utc and don't have tzinfo
|
||||||
gmtime = list(time.gmtime(secs))
|
"""
|
||||||
gmtime[8] = 1
|
if tz_name is not None:
|
||||||
return datetime.fromtimestamp(time.mktime(gmtime))
|
tz = pytz.timezone(tz_name)
|
||||||
|
return tz.localize(d)
|
||||||
|
else:
|
||||||
|
return d
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from functools import partial
|
||||||
import locale
|
import locale
|
||||||
|
|
||||||
from feedgenerator import Atom1Feed, Rss201rev2Feed
|
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.paginator import Paginator
|
||||||
from pelican.log import *
|
from pelican.log import *
|
||||||
|
|
||||||
|
|
@ -37,7 +37,8 @@ class Writer(object):
|
||||||
description=item.content,
|
description=item.content,
|
||||||
categories=item.tags if hasattr(item, 'tags') else None,
|
categories=item.tags if hasattr(item, 'tags') else None,
|
||||||
author_name=getattr(item, 'author', 'John Doe'),
|
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'):
|
def write_feed(self, elements, context, filename=None, feed_type='atom'):
|
||||||
"""Generate a feed with the list of articles provided
|
"""Generate a feed with the list of articles provided
|
||||||
|
|
|
||||||
2
setup.py
2
setup.py
|
|
@ -4,7 +4,7 @@ import sys
|
||||||
|
|
||||||
VERSION = "2.7.2" # find a better way to do so.
|
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):
|
if sys.version_info < (2,7):
|
||||||
requires.append('argparse')
|
requires.append('argparse')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,8 @@ AUTHOR = u"$author"
|
||||||
SITENAME = u"$sitename"
|
SITENAME = u"$sitename"
|
||||||
SITEURL = '/'
|
SITEURL = '/'
|
||||||
|
|
||||||
|
TIMEZONE = 'Europe/Paris'
|
||||||
|
|
||||||
DEFAULT_LANG='$lang'
|
DEFAULT_LANG='$lang'
|
||||||
|
|
||||||
# Blogroll
|
# Blogroll
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue