diff --git a/.github/workflows/pyinstaller.yml b/.github/workflows/pyinstaller.yml index 4073c13..14587d3 100644 --- a/.github/workflows/pyinstaller.yml +++ b/.github/workflows/pyinstaller.yml @@ -15,6 +15,10 @@ jobs: runs-on: ${{ inputs.runs-on }} steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + - uses: actions/setup-python@v5 with: python-version: ${{ inputs.python-version }} @@ -24,6 +28,9 @@ jobs: from-pipfile: true dev: true + - name: Install current package + run: pip install . + - name: Run PyInstaller run: "pyinstaller BlackboardSync.spec --noconfirm --clean" diff --git a/BlackboardSync.spec b/BlackboardSync.spec index 024d7e3..3d55661 100644 --- a/BlackboardSync.spec +++ b/BlackboardSync.spec @@ -1,6 +1,7 @@ # -*- mode: python ; coding: utf-8 -*- import platform +from PyInstaller.utils.hooks import copy_metadata def get_icon(): @@ -11,11 +12,13 @@ def get_icon(): def get_datas(): s = "\\" if platform.system() == "Windows" else "/" + metadata = copy_metadata('blackboardsync')[0] return [ (f"blackboard_sync{s}assets", f"blackboard_sync{s}assets"), (f"blackboard_sync{s}qt", f"blackboard_sync{s}qt"), - (f"blackboard_sync{s}universities.json", f"blackboard_sync") + (f"blackboard_sync{s}universities.json", f"blackboard_sync"), + metadata ] a = Analysis( diff --git a/blackboard_sync/qt/SettingsWindow.py b/blackboard_sync/qt/SettingsWindow.py index dee1a2d..d6371db 100644 --- a/blackboard_sync/qt/SettingsWindow.py +++ b/blackboard_sync/qt/SettingsWindow.py @@ -46,6 +46,7 @@ def __init__(self) -> None: self.frequency_combo: QComboBox self.current_session_label: QLabel self.download_location_hint: QLabel + self.version_label: QLabel self.select_download_location: QPushButton self.log_out_button: QPushButton self.setup_button: QPushButton @@ -108,3 +109,13 @@ def username(self, username: str) -> None: else: self.current_session_label.setText( self.tr("Not currently logged in")) + + @property + def version(self) -> str | None: + return self.version_label.text() + + @version.setter + def version(self, value: str | None) -> None: + if value is None: + value = self.tr("No version detected") + self.version_label.setText(value) diff --git a/blackboard_sync/qt/SettingsWindow.ui b/blackboard_sync/qt/SettingsWindow.ui index 9f609b2..fb7fbab 100644 --- a/blackboard_sync/qt/SettingsWindow.ui +++ b/blackboard_sync/qt/SettingsWindow.ui @@ -6,24 +6,24 @@ 0 0 - 480 - 580 + 420 + 500 - 360 - 540 + 400 + 450 - 480 - 580 + 500 + 600 - Settings + Preferences @@ -48,6 +48,22 @@ + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + @@ -73,7 +89,7 @@ - Location to be shown here + true @@ -93,6 +109,22 @@ + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + @@ -134,6 +166,22 @@ + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + @@ -159,7 +207,17 @@ - Logged in as + + + + + + + + false + + + diff --git a/blackboard_sync/qt/manager.py b/blackboard_sync/qt/manager.py index def76a3..7dcd9f8 100644 --- a/blackboard_sync/qt/manager.py +++ b/blackboard_sync/qt/manager.py @@ -179,11 +179,12 @@ def slot_quit(self) -> None: self.login_window.cancel_watchdog() self.app.quit() - def open_settings(self, download_location: Path, - username: str, sync_interval: int) -> None: + def open_settings(self, download_location: Path, username: str, + sync_interval: int, version: str | None) -> None: self.config_window.download_location = download_location self.config_window.username = username self.config_window.sync_frequency = sync_interval + self.config_window.version = version self.show(self.config_window) def open_menu(self, last_sync: datetime, diff --git a/blackboard_sync/qt/translations/de.qm b/blackboard_sync/qt/translations/de.qm index 074835c..e06649f 100644 Binary files a/blackboard_sync/qt/translations/de.qm and b/blackboard_sync/qt/translations/de.qm differ diff --git a/blackboard_sync/qt/translations/de.ts b/blackboard_sync/qt/translations/de.ts index 2dc7710..0cf3a05 100644 --- a/blackboard_sync/qt/translations/de.ts +++ b/blackboard_sync/qt/translations/de.ts @@ -71,7 +71,7 @@ SettingsWindow - Settings + Preferences Einstellungen @@ -79,11 +79,6 @@ Download location Download-Ordner - - - Location to be shown here - Ort wird hier angezeigt - Change location @@ -114,11 +109,6 @@ User session Benutzersitzung - - - Logged in as - Angemeldet als - Log out @@ -130,15 +120,20 @@ Konfiguration - + Logged in as Angemeldet als - + Not currently logged in Derzeit nicht angemeldet + + + No version detected + Version nicht erkannt + SetupWizard diff --git a/blackboard_sync/qt/translations/es.qm b/blackboard_sync/qt/translations/es.qm index 15ac660..eb982eb 100644 Binary files a/blackboard_sync/qt/translations/es.qm and b/blackboard_sync/qt/translations/es.qm differ diff --git a/blackboard_sync/qt/translations/es.ts b/blackboard_sync/qt/translations/es.ts index 68d213c..2867cb2 100644 --- a/blackboard_sync/qt/translations/es.ts +++ b/blackboard_sync/qt/translations/es.ts @@ -71,7 +71,7 @@ SettingsWindow - Settings + Preferences Preferencias @@ -79,11 +79,6 @@ Download location Ubicación de descarga - - - Location to be shown here - Ubicación se mostrará aquí - Change location @@ -114,11 +109,6 @@ User session Sesión de usuario - - - Logged in as - Ingresaste como - Log out @@ -130,15 +120,20 @@ Configuración - + Logged in as Ingresaste como - + Not currently logged in No has ingresado + + + No version detected + Versión desconocida + SetupWizard diff --git a/blackboard_sync/qt/translations/fr.qm b/blackboard_sync/qt/translations/fr.qm index 64da468..715831f 100644 Binary files a/blackboard_sync/qt/translations/fr.qm and b/blackboard_sync/qt/translations/fr.qm differ diff --git a/blackboard_sync/qt/translations/fr.ts b/blackboard_sync/qt/translations/fr.ts index a8fc51b..756bf18 100644 --- a/blackboard_sync/qt/translations/fr.ts +++ b/blackboard_sync/qt/translations/fr.ts @@ -71,7 +71,7 @@ SettingsWindow - Settings + Preferences Préférences @@ -79,11 +79,6 @@ Download location Emplacement de téléchargement - - - Location to be shown here - Emplacement à afficher ici - Change location @@ -114,11 +109,6 @@ User session Session utilisateur - - - Logged in as - Connecté en tant que - Log out @@ -130,15 +120,20 @@ Paramètres - + Logged in as Connecté en tant que - + Not currently logged in Vous n'êtes pas connecté + + + No version detected + Version non détectée + SetupWizard diff --git a/blackboard_sync/sync_controller.py b/blackboard_sync/sync_controller.py index 1e57e1b..b84d54d 100644 --- a/blackboard_sync/sync_controller.py +++ b/blackboard_sync/sync_controller.py @@ -20,6 +20,8 @@ # MA 02110-1301, USA. from requests.cookies import RequestsCookieJar +from importlib.metadata import PackageNotFoundError +from importlib.metadata import version as get_version from .sync import BlackboardSync from .__about__ import __id__, __title__, __uri__ @@ -69,9 +71,18 @@ def force_sync(self) -> None: self.model.force_sync() def open_settings(self) -> None: + __version__ = None + package = __package__.replace('_', '') + + try: + __version__ = get_version(package) + except PackageNotFoundError: + pass + self.ui.open_settings(self.model.download_location, self.model.username, - self.model.sync_interval) + self.model.sync_interval, + __version__) def open_menu(self) -> None: self.ui.open_menu(self.model.last_sync_time, diff --git a/blackboard_sync/updates.py b/blackboard_sync/updates.py index 8f566dd..dba32f3 100644 --- a/blackboard_sync/updates.py +++ b/blackboard_sync/updates.py @@ -29,7 +29,7 @@ def check_for_updates() -> bool: """Checks if there is a newer release than the current on Github.""" try: - __version__ = get_version("blackboard_sync") + __version__ = get_version(__package__) except PackageNotFoundError: return False diff --git a/tests/test_qt.py b/tests/test_qt.py index 173c9db..f37cb6c 100644 --- a/tests/test_qt.py +++ b/tests/test_qt.py @@ -169,7 +169,6 @@ class TestSettingsWindow: def test_settings_window_initial_state(self, qtbot, settings_window): qtbot.addWidget(settings_window) assert settings_window.sync_frequency == SyncPeriod.HALF_HOUR - assert settings_window.download_location_hint.text() == 'Location to be shown here' def test_settings_window_download_location_dialog(self, qtbot, settings_window, tmp_path, monkeypatch):