mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
parent
715c056cd4
commit
1d2bf8e96e
5 changed files with 33 additions and 23 deletions
|
|
@ -4,10 +4,15 @@ import locale
|
|||
import logging
|
||||
import os
|
||||
import re
|
||||
from datetime import timezone
|
||||
from html import unescape
|
||||
from urllib.parse import unquote, urljoin, urlparse, urlunparse
|
||||
|
||||
import pytz
|
||||
try:
|
||||
import zoneinfo
|
||||
except ModuleNotFoundError:
|
||||
from backports import zoneinfo
|
||||
|
||||
|
||||
from pelican.plugins import signals
|
||||
from pelican.settings import DEFAULT_CONFIG
|
||||
|
|
@ -120,9 +125,9 @@ class Content:
|
|||
self.date_format = self.date_format[1]
|
||||
|
||||
# manage timezone
|
||||
default_timezone = settings.get('TIMEZONE', 'UTC')
|
||||
timezone = getattr(self, 'timezone', default_timezone)
|
||||
self.timezone = pytz.timezone(timezone)
|
||||
default_timezone = settings.get("TIMEZONE", "UTC")
|
||||
timezone = getattr(self, "timezone", default_timezone)
|
||||
self.timezone = zoneinfo.ZoneInfo(timezone)
|
||||
|
||||
if hasattr(self, 'date'):
|
||||
self.date = set_date_tzinfo(self.date, timezone)
|
||||
|
|
@ -525,7 +530,7 @@ class Article(Content):
|
|||
if self.date.tzinfo is None:
|
||||
now = datetime.datetime.now()
|
||||
else:
|
||||
now = datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
|
||||
now = datetime.datetime.utcnow().replace(tzinfo=timezone.utc)
|
||||
if self.date > now:
|
||||
self.status = 'draft'
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@ from typing import Mapping
|
|||
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
|
||||
import pytz
|
||||
try:
|
||||
import zoneinfo
|
||||
except ModuleNotFoundError:
|
||||
from backports import zoneinfo
|
||||
|
||||
try:
|
||||
import readline # NOQA
|
||||
|
|
@ -17,8 +20,8 @@ except ImportError:
|
|||
try:
|
||||
import tzlocal
|
||||
_DEFAULT_TIMEZONE = tzlocal.get_localzone().zone
|
||||
except ImportError:
|
||||
_DEFAULT_TIMEZONE = 'Europe/Rome'
|
||||
except ModuleNotFoundError:
|
||||
_DEFAULT_TIMEZONE = "Europe/Rome"
|
||||
|
||||
from pelican import __version__
|
||||
|
||||
|
|
@ -158,16 +161,15 @@ def ask(question, answer=str, default=None, length=None):
|
|||
|
||||
def ask_timezone(question, default, tzurl):
|
||||
"""Prompt for time zone and validate input"""
|
||||
lower_tz = [tz.lower() for tz in pytz.all_timezones]
|
||||
tz_dict = {tz.lower(): tz for tz in zoneinfo.available_timezones()}
|
||||
while True:
|
||||
r = ask(question, str, default)
|
||||
r = r.strip().replace(' ', '_').lower()
|
||||
if r in lower_tz:
|
||||
r = pytz.all_timezones[lower_tz.index(r)]
|
||||
r = r.strip().replace(" ", "_").lower()
|
||||
if r in tz_dict.keys():
|
||||
r = tz_dict[r]
|
||||
break
|
||||
else:
|
||||
print('Please enter a valid time zone:\n'
|
||||
' (check [{}])'.format(tzurl))
|
||||
print("Please enter a valid time zone:\n" " (check [{}])".format(tzurl))
|
||||
return r
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,10 +18,12 @@ from operator import attrgetter
|
|||
|
||||
import dateutil.parser
|
||||
|
||||
try:
|
||||
import zoneinfo
|
||||
except ModuleNotFoundError:
|
||||
from backports import zoneinfo
|
||||
from markupsafe import Markup
|
||||
|
||||
import pytz
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -919,10 +921,11 @@ class FileSystemWatcher:
|
|||
def set_date_tzinfo(d, tz_name=None):
|
||||
"""Set the timezone for dates that don't have tzinfo"""
|
||||
if tz_name and not d.tzinfo:
|
||||
tz = pytz.timezone(tz_name)
|
||||
d = tz.localize(d)
|
||||
return SafeDatetime(d.year, d.month, d.day, d.hour, d.minute, d.second,
|
||||
d.microsecond, d.tzinfo)
|
||||
timezone = zoneinfo.ZoneInfo(tz_name)
|
||||
d = d.replace(tzinfo=timezone)
|
||||
return SafeDatetime(
|
||||
d.year, d.month, d.day, d.hour, d.minute, d.second, d.microsecond, d.tzinfo
|
||||
)
|
||||
return d
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@ feedgenerator = ">=1.9"
|
|||
jinja2 = ">=2.7"
|
||||
pygments = ">=2.6"
|
||||
python-dateutil = ">=2.8"
|
||||
pytz = ">=2020.1"
|
||||
rich = ">=10.1"
|
||||
unidecode = ">=1.1"
|
||||
markdown = {version = ">=3.1", optional = true}
|
||||
backports-zoneinfo = {version = "^0.2.1", python = "<3.9"}
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
BeautifulSoup4 = "^4.9"
|
||||
|
|
|
|||
4
setup.py
4
setup.py
|
|
@ -9,8 +9,8 @@ from setuptools import find_packages, setup
|
|||
version = "4.8.0"
|
||||
|
||||
requires = ['feedgenerator >= 1.9', 'jinja2 >= 2.7', 'pygments',
|
||||
'docutils>=0.15', 'pytz >= 0a', 'blinker', 'unidecode',
|
||||
'python-dateutil', 'rich']
|
||||
'docutils>=0.15', 'blinker', 'unidecode', 'python-dateutil',
|
||||
'rich', 'backports-zoneinfo[tzdata] >= 0.2; python_version<"3.9"']
|
||||
|
||||
entry_points = {
|
||||
'console_scripts': [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue