catch strange behavior of strptime in get_zsync
This commit is contained in:
parent
ebf3e9635d
commit
2fbaa94109
@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from os import getenv, stat
|
from os import getenv, stat
|
||||||
from os.path import exists
|
from os.path import exists
|
||||||
@ -116,29 +115,29 @@ class UpdateDialog(QtWidgets.QDialog):
|
|||||||
# Download zsync file of latest Appimage, look for SHA-1 hash and compare with hash of AppImage
|
# Download zsync file of latest Appimage, look for SHA-1 hash and compare with hash of AppImage
|
||||||
is_updateble, m_time_file, m_time_zsync = self.updater.get_update_information(filename)
|
is_updateble, m_time_file, m_time_zsync = self.updater.get_update_information(filename)
|
||||||
|
|
||||||
if m_time_zsync is None:
|
label_text = ''
|
||||||
label_text = '<p>Retrieval of version information failed.</p>' \
|
|
||||||
'<p>Please try later (or complain to people that it does not work).</p>'
|
if is_updateble is None:
|
||||||
|
label_text += '<p>Could not determine if this version is newer, please update manually (if necessary).</p>'
|
||||||
dialog_bttns = QtWidgets.QDialogButtonBox.Close
|
dialog_bttns = QtWidgets.QDialogButtonBox.Close
|
||||||
|
elif is_updateble:
|
||||||
|
label_text += '<p>Newer version available. Press Ok to download new version, Cancel to ignore.</p>'
|
||||||
|
dialog_bttns = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel
|
||||||
else:
|
else:
|
||||||
label_text = f'<p>Date of most recent AppImage: {m_time_zsync.strftime("%d %B %Y %H:%M")}</p>'
|
label_text += '<p>Version may be already up-to-date.</p>'
|
||||||
|
dialog_bttns = QtWidgets.QDialogButtonBox.Close
|
||||||
|
|
||||||
|
if m_time_zsync is None:
|
||||||
|
label_text += '<p>Creation date of remote version is unknown.</p>'
|
||||||
|
else:
|
||||||
|
label_text += f'<p>Date of most recent AppImage: {m_time_zsync.strftime("%d %B %Y %H:%M")}</p>'
|
||||||
|
|
||||||
if m_time_file is None:
|
if m_time_file is None:
|
||||||
label_text += 'No AppImage file found, press Ok to download latest version.'
|
label_text += 'No AppImage file found, press Ok to download latest version.'
|
||||||
dialog_bttns = QtWidgets.QDialogButtonBox.Ok|QtWidgets.QDialogButtonBox.Close
|
dialog_bttns = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Close
|
||||||
else:
|
else:
|
||||||
label_text += f'<p>Date of used AppImage: {m_time_file.strftime("%d %B %Y %H:%M")}</p>'
|
label_text += f'<p>Date of used AppImage: {m_time_file.strftime("%d %B %Y %H:%M")}</p>'
|
||||||
|
|
||||||
if is_updateble is None:
|
|
||||||
self.status.setText('Could not determine if this version is newer, please update manually (if necessary).')
|
|
||||||
dialog_bttns = QtWidgets.QDialogButtonBox.Close
|
|
||||||
elif is_updateble:
|
|
||||||
self.status.setText(f'<p>Newer version available. Press Ok to download new version, Cancel to ignore.')
|
|
||||||
dialog_bttns = QtWidgets.QDialogButtonBox.Ok|QtWidgets.QDialogButtonBox.Cancel
|
|
||||||
else:
|
|
||||||
self.status.setText(f'Version may be already up-to-date.')
|
|
||||||
dialog_bttns = QtWidgets.QDialogButtonBox.Close
|
|
||||||
|
|
||||||
self.label.setText(label_text)
|
self.label.setText(label_text)
|
||||||
self.dialog_button.setStandardButtons(dialog_bttns)
|
self.dialog_button.setStandardButtons(dialog_bttns)
|
||||||
|
|
||||||
@ -241,8 +240,13 @@ class Updater:
|
|||||||
for line in zsync_file.split(b'\n'):
|
for line in zsync_file.split(b'\n'):
|
||||||
try:
|
try:
|
||||||
kw, val = line.split(b': ')
|
kw, val = line.split(b': ')
|
||||||
|
time_string = str(val, encoding='utf-8')
|
||||||
|
time_format = '%a, %d %b %Y %H:%M:%S %z'
|
||||||
if kw == b'MTime':
|
if kw == b'MTime':
|
||||||
m_time_zsync = datetime.strptime(str(val, encoding='utf-8'), '%a, %d %b %Y %H:%M:%S %z').astimezone(None)
|
try:
|
||||||
|
m_time_zsync = datetime.strptime(time_string, time_format).astimezone(None)
|
||||||
|
except ValueError:
|
||||||
|
logger.warning(f'zsync time "{time_string}" does not match "{time_format}"')
|
||||||
elif kw == b'SHA-1':
|
elif kw == b'SHA-1':
|
||||||
checksum_zsync = str(val, encoding='utf-8')
|
checksum_zsync = str(val, encoding='utf-8')
|
||||||
elif kw == b'Filename':
|
elif kw == b'Filename':
|
||||||
@ -277,7 +281,7 @@ class Updater:
|
|||||||
m_time_file, checksum_file = Updater.get_appimage_info(filename)
|
m_time_file, checksum_file = Updater.get_appimage_info(filename)
|
||||||
|
|
||||||
logger.info(f'zsync information {m_time_zsync}, {checksum_zsync}, {appname}')
|
logger.info(f'zsync information {m_time_zsync}, {checksum_zsync}, {appname}')
|
||||||
logger.info(f'file information {m_time_file}, {checksum_zsync}')
|
logger.info(f'file information {m_time_file}, {checksum_file}')
|
||||||
|
|
||||||
if not ((checksum_file is not None) and (checksum_zsync is not None)):
|
if not ((checksum_file is not None) and (checksum_zsync is not None)):
|
||||||
return None, m_time_file, m_time_zsync
|
return None, m_time_file, m_time_zsync
|
||||||
|
Loading…
Reference in New Issue
Block a user