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
-
+
Einstellungen
@@ -79,11 +79,6 @@
Download-Ordner
-
-
-
- Ort wird hier angezeigt
-
@@ -114,11 +109,6 @@
Benutzersitzung
-
-
-
- Angemeldet als
-
@@ -130,15 +120,20 @@
Konfiguration
-
+
Angemeldet als
-
+
Derzeit nicht angemeldet
+
+
+
+ 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
-
+
Preferencias
@@ -79,11 +79,6 @@
Ubicación de descarga
-
-
-
- Ubicación se mostrará aquí
-
@@ -114,11 +109,6 @@
Sesión de usuario
-
-
-
- Ingresaste como
-
@@ -130,15 +120,20 @@
Configuración
-
+
Ingresaste como
-
+
No has ingresado
+
+
+
+ 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
-
+
Préférences
@@ -79,11 +79,6 @@
Emplacement de téléchargement
-
-
-
- Emplacement à afficher ici
-
@@ -114,11 +109,6 @@
Session utilisateur
-
-
-
- Connecté en tant que
-
@@ -130,15 +120,20 @@
Paramètres
-
+
Connecté en tant que
-
+
Vous n'êtes pas connecté
+
+
+
+ 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):