2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-05-15 19:43:09 +00:00

Switch to zoneinfo from pytz ()

* switch to zoneinfo from pytz

* fix lookup

* fix assert

* fix another round of assertions
This commit is contained in:
Matthias Mair 2024-12-22 22:46:31 +01:00 committed by GitHub
parent 0bcad6b340
commit aa905166c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 19 additions and 20 deletions
src/backend/InvenTree

@ -22,9 +22,10 @@ from django.utils import timezone
from django.utils.translation import gettext_lazy as _
import bleach
import pytz
from bleach import clean
from djmoney.money import Money
from PIL import Image
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
from common.currency import currency_code_default
@ -138,8 +139,6 @@ def getStaticUrl(filename):
def TestIfImage(img):
"""Test if an image file is indeed an image."""
from PIL import Image
try:
Image.open(img).verify()
return True
@ -962,15 +961,15 @@ def to_local_time(time, target_tz: Optional[str] = None):
if not source_tz:
# Default to UTC if not provided
source_tz = pytz.utc
source_tz = ZoneInfo('UTC')
if not target_tz:
target_tz = server_timezone()
try:
target_tz = pytz.timezone(str(target_tz))
except pytz.UnknownTimeZoneError:
target_tz = pytz.utc
target_tz = ZoneInfo(str(target_tz))
except ZoneInfoNotFoundError:
target_tz = ZoneInfo('UTC')
target_time = time.replace(tzinfo=source_tz).astimezone(target_tz)

@ -19,9 +19,9 @@ import django.core.exceptions
from django.core.validators import URLValidator
from django.http import Http404
import pytz
import structlog
from dotenv import load_dotenv
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
from InvenTree.cache import get_cache_config, is_global_cache_enabled
from InvenTree.config import get_boolean_setting, get_custom_file, get_setting
@ -1040,8 +1040,8 @@ TIME_ZONE = get_setting('INVENTREE_TIMEZONE', 'timezone', 'UTC')
# Check that the timezone is valid
try:
pytz.timezone(TIME_ZONE)
except pytz.exceptions.UnknownTimeZoneError: # pragma: no cover
ZoneInfo(TIME_ZONE)
except ZoneInfoNotFoundError: # pragma: no cover
raise ValueError(f"Specified timezone '{TIME_ZONE}' is not valid")
USE_I18N = True

@ -16,12 +16,12 @@ from django.urls import reverse
from django.utils import timezone
import pint.errors
import pytz
from djmoney.contrib.exchange.exceptions import MissingRate
from djmoney.contrib.exchange.models import Rate, convert_money
from djmoney.money import Money
from maintenance_mode.core import get_maintenance_mode, set_maintenance_mode
from sesame.utils import get_user
from zoneinfo import ZoneInfo
import InvenTree.conversion
import InvenTree.format
@ -736,14 +736,14 @@ class TestTimeFormat(TestCase):
month=1,
day=1,
hour=0,
minute=0,
minute=1,
second=0,
tzinfo=pytz.timezone('Europe/London'),
tzinfo=ZoneInfo('Europe/London'),
)
tests = [
('UTC', '2000-01-01 00:01:00+00:00'),
('Europe/London', '2000-01-01 00:00:00-00:01'),
('Europe/London', '2000-01-01 00:01:00+00:00'),
('America/New_York', '1999-12-31 19:01:00-05:00'),
# All following tests should result in the same value
('Australia/Sydney', '2000-01-01 11:01:00+11:00'),

@ -10,8 +10,8 @@ from django.urls import reverse
from django.utils import timezone
from django.utils.safestring import SafeString
import pytz
from PIL import Image
from zoneinfo import ZoneInfo
import report.models as report_models
from build.models import Build
@ -182,17 +182,17 @@ class ReportTagTest(TestCase):
hour=12,
minute=30,
second=0,
tzinfo=pytz.timezone('Australia/Sydney'),
tzinfo=ZoneInfo('Australia/Sydney'),
)
# Format a set of tests: timezone, format, expected
tests = [
(None, None, '2024-03-12T22:25:00-04:00'),
(None, None, '2024-03-12T21:30:00-04:00'),
(None, '%d-%m-%y', '12-03-24'),
('UTC', None, '2024-03-13T02:25:00+00:00'),
('UTC', None, '2024-03-13T01:30:00+00:00'),
('UTC', '%d-%B-%Y', '13-March-2024'),
('Europe/Amsterdam', None, '2024-03-13T03:25:00+01:00'),
('Europe/Amsterdam', '%y-%m-%d %H:%M', '24-03-13 03:25'),
('Europe/Amsterdam', None, '2024-03-13T02:30:00+01:00'),
('Europe/Amsterdam', '%y-%m-%d %H:%M', '24-03-13 02:30'),
]
for tz, fmt, expected in tests: