qcanvas 2.0.4__py3-none-any.whl → 2.0.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of qcanvas might be problematic. Click here for more details.
- qcanvas/__init__.py +15 -9
- qcanvas/app.py +2 -0
- qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py +1 -1
- qcanvas/ui/qcanvas_window/qcanvas_window.py +8 -4
- qcanvas/ui/setup/setup_dialog.py +2 -5
- {qcanvas-2.0.4.dist-info → qcanvas-2.0.6.dist-info}/METADATA +24 -1
- {qcanvas-2.0.4.dist-info → qcanvas-2.0.6.dist-info}/RECORD +9 -9
- {qcanvas-2.0.4.dist-info → qcanvas-2.0.6.dist-info}/WHEEL +1 -1
- {qcanvas-2.0.4.dist-info → qcanvas-2.0.6.dist-info}/entry_points.txt +0 -0
qcanvas/__init__.py
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
# nuitka-project: --nofollow-import-to=yt_dlp.extractor.lazy_extractors
|
|
24
24
|
|
|
25
25
|
import logging
|
|
26
|
+
import logging.config
|
|
26
27
|
from logging import INFO, WARNING
|
|
27
28
|
|
|
28
29
|
import qcanvas.app as app
|
|
@@ -34,18 +35,23 @@ def main():
|
|
|
34
35
|
|
|
35
36
|
logging.basicConfig(
|
|
36
37
|
filemode="w",
|
|
37
|
-
filename=paths.data_storage() / "
|
|
38
|
+
filename=paths.data_storage() / "qcanvas.log",
|
|
38
39
|
level="WARN",
|
|
39
40
|
)
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
log_config = paths.data_storage() / "logging.ini"
|
|
43
|
+
|
|
44
|
+
if log_config.exists():
|
|
45
|
+
logging.config.fileConfig(log_config, disable_existing_loggers=False)
|
|
46
|
+
else:
|
|
47
|
+
logs.set_levels(
|
|
48
|
+
{
|
|
49
|
+
"qcanvas": INFO,
|
|
50
|
+
"qcanvas.ui": WARNING,
|
|
51
|
+
"libqcanvas": INFO,
|
|
52
|
+
"qcanvas.ui.main_ui.status_bar_progress_display": INFO,
|
|
53
|
+
}
|
|
54
|
+
)
|
|
49
55
|
|
|
50
56
|
app.launch()
|
|
51
57
|
|
qcanvas/app.py
CHANGED
|
@@ -36,6 +36,7 @@ class _MainStarter(QObject):
|
|
|
36
36
|
async def _start(self):
|
|
37
37
|
_qcanvas = await self._setup_database()
|
|
38
38
|
|
|
39
|
+
# TODO it might be more reliable to use self here!
|
|
39
40
|
_main_window = QCanvasWindow(_qcanvas)
|
|
40
41
|
_main_window.show()
|
|
41
42
|
self.setParent(_main_window)
|
|
@@ -62,6 +63,7 @@ def run_setup():
|
|
|
62
63
|
app.aboutToQuit.connect(app_close_event.set, Qt.ConnectionType.SingleShotConnection)
|
|
63
64
|
|
|
64
65
|
setup_window = SetupDialog()
|
|
66
|
+
setup_window.rejected.connect(lambda: exit())
|
|
65
67
|
setup_window.show()
|
|
66
68
|
|
|
67
69
|
with event_loop:
|
|
@@ -56,7 +56,7 @@ class AssignmentTab(ContentTab):
|
|
|
56
56
|
|
|
57
57
|
self._submission_files_pane = AttachmentsPane(downloader)
|
|
58
58
|
self._submission_files_dock = ui.dock_widget(
|
|
59
|
-
title="
|
|
59
|
+
title="Submitted Files",
|
|
60
60
|
name="sub_files_dock",
|
|
61
61
|
widget=self._submission_files_pane,
|
|
62
62
|
min_size=ui.size(150, 150),
|
|
@@ -234,10 +234,14 @@ class QCanvasWindow(QMainWindow):
|
|
|
234
234
|
opening_progress_dialog.setWindowTitle("Please wait")
|
|
235
235
|
opening_progress_dialog.show()
|
|
236
236
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
237
|
+
try:
|
|
238
|
+
open_url = QUrl(
|
|
239
|
+
await self._qcanvas.canvas_client.get_temporary_session_url()
|
|
240
|
+
)
|
|
241
|
+
_logger.info(f"Opening URL {open_url}")
|
|
242
|
+
QDesktopServices.openUrl(open_url)
|
|
243
|
+
finally:
|
|
244
|
+
opening_progress_dialog.close()
|
|
241
245
|
|
|
242
246
|
@Slot()
|
|
243
247
|
def _open_downloads_folder(self) -> None:
|
qcanvas/ui/setup/setup_dialog.py
CHANGED
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
|
5
5
|
from libqcanvas_clients.canvas import CanvasClient, CanvasClientConfig
|
|
6
6
|
from libqcanvas_clients.panopto import PanoptoClient, PanoptoClientConfig
|
|
7
7
|
from libqcanvas_clients.util.request_exceptions import ConfigInvalidError
|
|
8
|
-
from PySide6.QtCore import Qt, QUrl,
|
|
8
|
+
from PySide6.QtCore import Qt, QUrl, Slot
|
|
9
9
|
from PySide6.QtGui import QDesktopServices, QIcon
|
|
10
10
|
from PySide6.QtWidgets import (
|
|
11
11
|
QCheckBox,
|
|
@@ -96,8 +96,6 @@ class _InputRow:
|
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
class SetupDialog(QDialog):
|
|
99
|
-
closed = Signal()
|
|
100
|
-
|
|
101
99
|
def __init__(self):
|
|
102
100
|
super().__init__()
|
|
103
101
|
|
|
@@ -289,8 +287,7 @@ class SetupDialog(QDialog):
|
|
|
289
287
|
|
|
290
288
|
settings.client.canvas_api_key = self._canvas_api_key_box.text
|
|
291
289
|
|
|
292
|
-
self.
|
|
293
|
-
self.close()
|
|
290
|
+
self.accept()
|
|
294
291
|
|
|
295
292
|
@Slot()
|
|
296
293
|
def _help_requested(self) -> None:
|
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: qcanvas
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.6
|
|
4
4
|
Summary: View courses from Canvas LMS
|
|
5
5
|
Author: QCanvas
|
|
6
6
|
Author-email: QCanvas@noreply.codeberg.org
|
|
7
7
|
Requires-Python: >=3.12,<3.13
|
|
8
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
9
|
+
Classifier: Environment :: X11 Applications
|
|
10
|
+
Classifier: Environment :: X11 Applications :: Qt
|
|
11
|
+
Classifier: Framework :: Pydantic
|
|
12
|
+
Classifier: Framework :: Pydantic :: 2
|
|
13
|
+
Classifier: Intended Audience :: Education
|
|
14
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
15
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
16
|
+
Classifier: Natural Language :: English
|
|
17
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
18
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
|
|
19
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
22
|
+
Classifier: Programming Language :: Python
|
|
8
23
|
Classifier: Programming Language :: Python :: 3
|
|
9
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
26
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
|
+
Classifier: Topic :: Database
|
|
28
|
+
Classifier: Topic :: Internet
|
|
29
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
30
|
+
Classifier: Topic :: Text Editors :: Text Processing
|
|
31
|
+
Classifier: Topic :: Text Processing :: Markup :: HTML
|
|
32
|
+
Classifier: Typing :: Typed
|
|
10
33
|
Requires-Dist: aiofile (>=3.9.0,<4.0.0)
|
|
11
34
|
Requires-Dist: aiosqlite (>=0.21.0,<0.22.0)
|
|
12
35
|
Requires-Dist: asynctaskpool (>=0.2.1,<0.3.0)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
qcanvas/__init__.py,sha256=
|
|
2
|
-
qcanvas/app.py,sha256=
|
|
1
|
+
qcanvas/__init__.py,sha256=J4gpVRrBBlMqeqyXPZj0uLc6g-0UCYgoQc72f8LjDks,1946
|
|
2
|
+
qcanvas/app.py,sha256=6oiksoNColxL6YJ9gjsnJxLLE9qy0AmzUIPc-4cU348,2856
|
|
3
3
|
qcanvas/backend_connectors/__init__.py,sha256=Wj8cmxQng3SSlmlXJyzHaPmvxbkauwsxINckPb7WuHc,108
|
|
4
4
|
qcanvas/backend_connectors/frontend_resource_manager.py,sha256=uzi8z2bNBdQoVkvtwxWo4qX5r0s13qmH5QL2t0vD0d8,1613
|
|
5
5
|
qcanvas/backend_connectors/qcanvas_task_master.py,sha256=G46WgM4LA9VGWUDe3cBfRqHEYrOqcM70UJ5ipwc8hm0,740
|
|
@@ -22,7 +22,7 @@ qcanvas/ui/course_viewer/course_tree/course_tree.py,sha256=KaPVdvS2tPdMZFhggWCvg
|
|
|
22
22
|
qcanvas/ui/course_viewer/course_viewer.py,sha256=AGZ6eQlRLb1i2ex-gbe2ygT3_sHYD7bvXy3tYQ2Jugc,4974
|
|
23
23
|
qcanvas/ui/course_viewer/tabs/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
|
|
24
24
|
qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py,sha256=w936dW7za10Fh6rN0zVA-7Kyiup3kd6C-mPAFHtxmy0,42
|
|
25
|
-
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py,sha256=
|
|
25
|
+
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py,sha256=VJLs2BwgQSPM_3nB2iNAbHqRbkIxz04ejSzh3otmnqs,4849
|
|
26
26
|
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py,sha256=Lwj3Sq_W_XFV240VpLK6W3kIUQ00NH9qB88mAKsYHNs,2908
|
|
27
27
|
qcanvas/ui/course_viewer/tabs/constants.py,sha256=rUVEGSREV9vTFs4o3AD2OjaSFA-GPsmelxYWz0J8OP4,48
|
|
28
28
|
qcanvas/ui/course_viewer/tabs/content_tab.py,sha256=l2h1Vl7t0GAFYXzEjihMzpBv596sOu8BJKiMz1lcFAE,3274
|
|
@@ -49,7 +49,7 @@ qcanvas/ui/qcanvas_window/options/auto_download_resources_option.py,sha256=oeVdU
|
|
|
49
49
|
qcanvas/ui/qcanvas_window/options/quick_sync_option.py,sha256=16zEFL__JRi-wE7Q99_Bqi-OHEBhRgf5QlnVUOUX3Eg,833
|
|
50
50
|
qcanvas/ui/qcanvas_window/options/sync_on_start_option.py,sha256=gL_FIulULN1uGBJJWgUszyjayQDw5WfppjoErbM3850,773
|
|
51
51
|
qcanvas/ui/qcanvas_window/options/theme_selection_menu.py,sha256=VMx79H45R7lcpMFpaN8eohbCxkQkq43MdH8W0nt2aTQ,1434
|
|
52
|
-
qcanvas/ui/qcanvas_window/qcanvas_window.py,sha256=
|
|
52
|
+
qcanvas/ui/qcanvas_window/qcanvas_window.py,sha256=VaIx3HE0HkC4NE1BNOh8k-Tu-8zQif4KJ5w9vEOlImY,9021
|
|
53
53
|
qcanvas/ui/qcanvas_window/status_bar_progress_display.py,sha256=v8cL7EzhKIO6YDo-IJGC2TvjnaHvHb9F2VyJtW0W4U8,5047
|
|
54
54
|
qcanvas/ui/qml_components/__init__.py,sha256=_qCJGhqDvxx8k4dIDgLFpKU7z-R7AS6HWPlsrUlAj2Q,203
|
|
55
55
|
qcanvas/ui/qml_components/attachments_pane.py,sha256=uzaMguTCOAdorU0t4UUkjSOjeY0rYEO3h9lMskLr4Ow,2352
|
|
@@ -72,7 +72,7 @@ qcanvas/ui/qml_components/qml_bridge_types.py,sha256=iHyG9ACG7bj8X_fty4Qpd5oSTmc
|
|
|
72
72
|
qcanvas/ui/qml_components/qml_pane.py,sha256=g4TDiWuZZ0eZ6rWagFJG4nE8aYXqS6cDl_UvjDBJi-Y,699
|
|
73
73
|
qcanvas/ui/setup/__init__.py,sha256=QWt2lEyLqWG5QC-BmCBlYyi0LZsBfsQYbP0XkvqA2f8,77
|
|
74
74
|
qcanvas/ui/setup/setup_checker.py,sha256=gU70geojUyOTW_fNgH-GzpTMrtYXsLHWf2wUnFaezmA,444
|
|
75
|
-
qcanvas/ui/setup/setup_dialog.py,sha256=
|
|
75
|
+
qcanvas/ui/setup/setup_dialog.py,sha256=RDZkxzUaTY3qfta6YmHDK9VHEa4_0sJSMHU1cRGJSso,10673
|
|
76
76
|
qcanvas/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
77
|
qcanvas/util/auto_downloader.py,sha256=DO2TCNQ2idUoITqlxxAp1tY8C5Zy52nghjCE4hv49aw,1905
|
|
78
78
|
qcanvas/util/basic_fonts.py,sha256=TqaY2UchDseHDZYB-Bh6r3xRoRuc5S9lf8j-fMGGCYQ,249
|
|
@@ -86,7 +86,7 @@ qcanvas/util/qurl_util.py,sha256=6nTk8VkQjT87wMOXyZucPBYdT6TTYzfCTElqsypLZPg,200
|
|
|
86
86
|
qcanvas/util/runtime.py,sha256=EO1HFCN7dZbQtKHQOILuvjZFXGT7SzhlmPvU8ma95Z8,617
|
|
87
87
|
qcanvas/util/ui_tools.py,sha256=cdwDrtljxIpzikvUt4CAMC06kogJ4WfhSTsC3lXAcz4,3575
|
|
88
88
|
qcanvas/util/url_checker.py,sha256=HkNFixp1ARwc_YjYkpHb-IMTyuaC7CylvYCgDyo3sh4,136
|
|
89
|
-
qcanvas-2.0.
|
|
90
|
-
qcanvas-2.0.
|
|
91
|
-
qcanvas-2.0.
|
|
92
|
-
qcanvas-2.0.
|
|
89
|
+
qcanvas-2.0.6.dist-info/METADATA,sha256=0swKAXWUoRPJqxELXMBBQ0mlGu5ci647m87HcyA8IkE,3092
|
|
90
|
+
qcanvas-2.0.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
91
|
+
qcanvas-2.0.6.dist-info/entry_points.txt,sha256=hqG_g3MRYh_eLyQcDN4H3EXqmBia_fnJTJ-3nqZGzvY,40
|
|
92
|
+
qcanvas-2.0.6.dist-info/RECORD,,
|
|
File without changes
|