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 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() / "debug.log",
38
+ filename=paths.data_storage() / "qcanvas.log",
38
39
  level="WARN",
39
40
  )
40
41
 
41
- logs.set_levels(
42
- {
43
- "qcanvas": INFO,
44
- "qcanvas.ui": WARNING,
45
- "libqcanvas": INFO,
46
- "qcanvas.ui.main_ui.status_bar_progress_display": INFO,
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="Submission Files",
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
- open_url = QUrl(await self._qcanvas.canvas_client.get_temporary_session_url())
238
- _logger.info(f"Opening URL {open_url}")
239
- QDesktopServices.openUrl(open_url)
240
- opening_progress_dialog.close()
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:
@@ -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, Signal, Slot
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.closed.emit()
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.4
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=r_xv_WzpWlX3v67iZHXjjEY42_oKDxTLwEmI9ttvHco,1719
2
- qcanvas/app.py,sha256=NNxjdzFtRaeGk0cSOHKepwK7ONvHwmY_RcW0IVVzoIs,2747
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=HAy6SsPTC-FpaaTWELS7lc5rgkB3Wm0m3DIHb3cvaaI,4850
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=VDgoBpldNAu_7Rj4BqT7KQOgcBN1Koq6c0s0uduumc8,8945
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=_-52R6B8UIpKWRQ5jqpypgJLdnm_aXrZ5cKtyAXq0JA,10730
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.4.dist-info/METADATA,sha256=3V9Y4Xv7aMPBf2GjXTXnjfxHlJjSwJIozwMnneB79LY,1969
90
- qcanvas-2.0.4.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
91
- qcanvas-2.0.4.dist-info/entry_points.txt,sha256=hqG_g3MRYh_eLyQcDN4H3EXqmBia_fnJTJ-3nqZGzvY,40
92
- qcanvas-2.0.4.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.1
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any