From 6b5434978bf37211b92ef183384324e0c6d0893e Mon Sep 17 00:00:00 2001 From: "dries.k" Date: Sat, 5 Aug 2023 15:21:28 +0200 Subject: [PATCH] remove python-dateutil dependency in favor of QDateTime --- gotify_tray/gotify/models.py | 15 ++++----------- gotify_tray/gui/MainApplication.py | 3 --- gotify_tray/gui/widgets/MessageWidget.py | 7 ++++++- requirements.txt | 1 - setup.py | 2 +- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/gotify_tray/gotify/models.py b/gotify_tray/gotify/models.py index fd413a3..3db0602 100644 --- a/gotify_tray/gotify/models.py +++ b/gotify_tray/gotify/models.py @@ -1,20 +1,13 @@ -import datetime -from dateutil.parser import isoparse import logging import requests +from PyQt6 import QtCore + logger = logging.getLogger("gotify-tray") -try: - local_timezone = datetime.datetime.utcnow().astimezone().tzinfo -except Exception as e: - logger.error(f"gotify.models.local_timezone error: {e}") - local_timezone = None - - class AttributeDict(dict): def __init__(self, *args, **kwargs): super(AttributeDict, self).__init__(*args, **kwargs) @@ -39,7 +32,7 @@ class GotifyPagingModel(AttributeDict): class GotifyMessageModel(AttributeDict): appid: int - date: datetime.datetime + date: QtCore.QDateTime extras: dict | None = None id: int message: str @@ -48,7 +41,7 @@ class GotifyMessageModel(AttributeDict): def __init__(self, d: dict, *args, **kwargs): d.update( - {"date": isoparse(d["date"]).astimezone(local_timezone)} + {"date": QtCore.QDateTime.fromString(d["date"], format=QtCore.Qt.DateFormat.ISODate).toLocalTime()} ) super(GotifyMessageModel, self).__init__(d, *args, **kwargs) diff --git a/gotify_tray/gui/MainApplication.py b/gotify_tray/gui/MainApplication.py index 3ebffb6..4636bf4 100644 --- a/gotify_tray/gui/MainApplication.py +++ b/gotify_tray/gui/MainApplication.py @@ -1,5 +1,4 @@ import getpass -import locale import logging import os import platform @@ -407,8 +406,6 @@ def start_gui(): init_logger(logger) - locale.setlocale(locale.LC_TIME, "") - # prevent multiple instances if (app.acquire_lock() or "--no-lock" in sys.argv) and verify_server(): app.init_ui() diff --git a/gotify_tray/gui/widgets/MessageWidget.py b/gotify_tray/gui/widgets/MessageWidget.py index f659e40..8d5afa9 100644 --- a/gotify_tray/gui/widgets/MessageWidget.py +++ b/gotify_tray/gui/widgets/MessageWidget.py @@ -38,7 +38,12 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form): # Display message contents self.label_title.setText(message.title) - self.label_date.setText(message.date.strftime("%x, %X" if settings.value("locale", type=bool) else "%Y-%m-%d, %H:%M")) + + if settings.value("locale", type=bool): + date_str = QtCore.QLocale.system().toString(message.date, QtCore.QLocale.FormatType.ShortFormat) + else: + date_str = message.date.toString("yyyy-MM-dd, hh:mm") + self.label_date.setText(date_str) if message.get("extras", {}).get("client::display", {}).get("contentType") == "text/markdown": self.label_message.setTextFormat(QtCore.Qt.TextFormat.MarkdownText) diff --git a/requirements.txt b/requirements.txt index e469dcf..fd7ab96 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ requests==2.31.0 websocket-client==1.5.2 pyqt6==6.5.1 -python-dateutil==2.8.2 diff --git a/setup.py b/setup.py index 718b325..0aea885 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ with open("version.txt", "r") as f: # What packages are required for this module to be executed? REQUIRED = [ - 'requests==2.31.0', 'pyqt6==6.5.1', 'websocket-client==1.5.2', 'python-dateutil==2.8.2' + 'requests==2.31.0', 'pyqt6==6.5.1', 'websocket-client==1.5.2' ] # What packages are optional?