catch strange behavior of strptime in get_zsync
This commit is contained in:
		| @@ -1,6 +1,5 @@ | ||||
| from __future__ import annotations | ||||
|  | ||||
| import sys | ||||
| from functools import lru_cache | ||||
| from os import getenv, stat | ||||
| from os.path import exists | ||||
| @@ -116,28 +115,28 @@ class UpdateDialog(QtWidgets.QDialog): | ||||
|         # 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) | ||||
|  | ||||
|         if m_time_zsync is None: | ||||
|             label_text = '<p>Retrieval of version information failed.</p>' \ | ||||
|                          '<p>Please try later (or complain to people that it does not work).</p>' | ||||
|         label_text = '' | ||||
|  | ||||
|         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 | ||||
|         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: | ||||
|             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_file is None: | ||||
|                 label_text += 'No AppImage file found, press Ok to download latest version.' | ||||
|                 dialog_bttns = QtWidgets.QDialogButtonBox.Ok|QtWidgets.QDialogButtonBox.Close | ||||
|             else: | ||||
|                 label_text += f'<p>Date of used AppImage: {m_time_file.strftime("%d %B %Y %H:%M")}</p>' | ||||
|         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 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 | ||||
|         if m_time_file is None: | ||||
|             label_text += 'No AppImage file found, press Ok to download latest version.' | ||||
|             dialog_bttns = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Close | ||||
|         else: | ||||
|             label_text += f'<p>Date of used AppImage: {m_time_file.strftime("%d %B %Y %H:%M")}</p>' | ||||
|  | ||||
|         self.label.setText(label_text) | ||||
|         self.dialog_button.setStandardButtons(dialog_bttns) | ||||
| @@ -241,8 +240,13 @@ class Updater: | ||||
|             for line in zsync_file.split(b'\n'): | ||||
|                 try: | ||||
|                     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': | ||||
|                         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': | ||||
|                         checksum_zsync = str(val, encoding='utf-8') | ||||
|                     elif kw == b'Filename': | ||||
| @@ -277,7 +281,7 @@ class Updater: | ||||
|         m_time_file, checksum_file = Updater.get_appimage_info(filename) | ||||
|  | ||||
|         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)): | ||||
|             return None, m_time_file, m_time_zsync | ||||
|   | ||||
		Reference in New Issue
	
	Block a user