Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/refactor #36

Merged
merged 3 commits into from
Nov 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions resources/forms/edit_subject.ui
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,16 @@
<item row="1" column="1">
<widget class="QComboBox" name="teacher_combo"/>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="refresh">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="QIcon::ThemeIcon::ViewRefresh"/>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
Expand Down
27 changes: 17 additions & 10 deletions resources/forms/hometask_list.ui
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,16 @@
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QListWidget" name="list_hometask">
<property name="selectionRectVisible">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
Expand All @@ -51,20 +61,17 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QListWidget" name="list_hometask">
<property name="selectionRectVisible">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>false</bool>
<item row="4" column="0">
<widget class="QPushButton" name="add_more">
<property name="text">
<string>Добавить новые</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="add_more">
<item row="2" column="0">
<widget class="QPushButton" name="refresh">
<property name="text">
<string>Добавить новые</string>
<string>Обновить</string>
</property>
</widget>
</item>
Expand Down
15 changes: 11 additions & 4 deletions resources/forms/subject_list.ui
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<string>Список предметов</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<item row="2" column="0">
<widget class="QListWidget" name="list_subject">
<property name="selectionRectVisible">
<bool>false</bool>
Expand All @@ -24,6 +24,13 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="add_more">
<property name="text">
<string>Добавить новые</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
Expand All @@ -43,10 +50,10 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="add_more">
<item row="1" column="0">
<widget class="QPushButton" name="refresh">
<property name="text">
<string>Добавить новые</string>
<string>Обновить</string>
</property>
</widget>
</item>
Expand Down
29 changes: 18 additions & 11 deletions resources/forms/teacher_list.ui
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,6 @@
<string>Список учителей</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QListWidget" name="list_teacher">
<property name="selectionRectVisible">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
Expand All @@ -43,13 +33,30 @@
</property>
</widget>
</item>
<item row="2" column="0">
<item row="3" column="0">
<widget class="QPushButton" name="add_more">
<property name="text">
<string>Добавить новых</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QListWidget" name="list_teacher">
<property name="selectionRectVisible">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="refresh">
<property name="text">
<string>Обновить</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
Expand Down
47 changes: 37 additions & 10 deletions src/student_journal/bootstrap/entrypoint/qt.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import logging
import signal
import sys
from functools import partial
from types import TracebackType
Expand All @@ -6,27 +8,51 @@

from student_journal.adapters.error_locator import ErrorLocator
from student_journal.application.exceptions.base import ApplicationError
from student_journal.application.exceptions.student import (
StudentIsNotAuthenticatedError,
)
from student_journal.bootstrap.di.container import get_container_for_gui
from student_journal.presentation.widget.main_window import MainWindow

logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s %(levelname)s %(name)s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)


def display_error_text(wnd: MainWindow, text: str) -> None:
msg = QMessageBox(wnd)
msg.setIcon(QMessageBox.Icon.Critical)
msg.setWindowTitle("Ошибка приложения")
msg.setText("Произошла ошибка!")
msg.setInformativeText(text)
msg.setStandardButtons(QMessageBox.StandardButton.Ok)
msg.exec()


def except_hook(
app: QApplication,
error_locator: ErrorLocator,
wnd: MainWindow,
_exc_type: type[Exception],
exc_value: Exception,
exc_value: BaseException,
_exc_traceback: TracebackType,
) -> None:
match exc_value:
case StudentIsNotAuthenticatedError() as e:
text = error_locator.get_text(e)
display_error_text(wnd, text)
app.closeAllWindows()
wnd.show()
wnd.display_register()

case ApplicationError() as e:
msg = QMessageBox(wnd)
msg.setIcon(QMessageBox.Icon.Critical)
msg.setWindowTitle("Ошибка приложения")
msg.setText("Произошла ошибка!")
msg.setInformativeText(error_locator.get_text(e))
msg.setStandardButtons(QMessageBox.StandardButton.Ok)
msg.exec()
case _:
text = error_locator.get_text(e)
display_error_text(wnd, text)

case BaseException() as e:
logging.critical("Unhandled exception", exc_info=e)
sys.exit()


Expand All @@ -38,6 +64,7 @@ def main(_argv: list[str]) -> None:
main_wnd.show()

locator = container.get(ErrorLocator)
sys.excepthook = partial(except_hook, locator, main_wnd)
sys.excepthook = partial(except_hook, app, locator, main_wnd)

signal.signal(signal.SIGINT, signal.SIG_DFL)
sys.exit(app.exec())
7 changes: 0 additions & 7 deletions src/student_journal/presentation/ui/about_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ class Ui_About(object):
def setupUi(self, About):
About.setObjectName("About")
About.setWindowModality(QtCore.Qt.WindowModality.NonModal)
About.resize(920, 557)
About.setWhatsThis("")
self.gridLayout = QtWidgets.QGridLayout(About)
self.gridLayout.setObjectName("gridLayout")
Expand All @@ -27,14 +26,9 @@ def setupUi(self, About):
self.textBrowser = QtWidgets.QTextBrowser(parent=About)
self.textBrowser.setObjectName("textBrowser")
self.gridLayout.addWidget(self.textBrowser, 1, 0, 1, 1)
self.close_btn = QtWidgets.QPushButton(parent=About)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.close_btn.sizePolicy().hasHeightForWidth())
self.close_btn.setSizePolicy(sizePolicy)
self.close_btn.setObjectName("close_btn")
self.gridLayout.addWidget(self.close_btn, 2, 0, 1, 1)

self.retranslateUi(About)
QtCore.QMetaObject.connectSlotsByName(About)
Expand All @@ -59,4 +53,3 @@ def retranslateUi(self, About):
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Разработано этими замечательными людьми и многообещающими мужчинами:</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">- Любавский Илья</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">- Роман Мельниченко</p></body></html>"))
self.close_btn.setText(_translate("About", "Закрыть"))
4 changes: 4 additions & 0 deletions src/student_journal/presentation/ui/edit_subject_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ def setupUi(self, EditSubject):
self.teacher_combo = QtWidgets.QComboBox(parent=EditSubject)
self.teacher_combo.setObjectName("teacher_combo")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.teacher_combo)
self.refresh = QtWidgets.QPushButton(parent=EditSubject)
self.refresh.setText("Обновить")
self.refresh.setObjectName("refresh")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.refresh)
self.gridLayout.addLayout(self.formLayout, 1, 0, 1, 1)
self.main_label = QtWidgets.QLabel(parent=EditSubject)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Fixed)
Expand Down
3 changes: 1 addition & 2 deletions src/student_journal/presentation/ui/edit_teacher_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ class Ui_EditTeacher(object):
def setupUi(self, EditTeacher):
EditTeacher.setObjectName("EditTeacher")
EditTeacher.setWindowModality(QtCore.Qt.WindowModality.WindowModal)
EditTeacher.resize(500, 300)
EditTeacher.setMaximumSize(QtCore.QSize(500, 300))

self.gridLayout = QtWidgets.QGridLayout(EditTeacher)
self.gridLayout.setObjectName("gridLayout")
self.submit_btn = QtWidgets.QPushButton(parent=EditTeacher)
Expand Down
16 changes: 10 additions & 6 deletions src/student_journal/presentation/ui/hometask_list_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ def setupUi(self, HometaskList):
self.show_done.setObjectName("show_done")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.show_done)
self.gridLayout.addLayout(self.formLayout, 1, 0, 1, 1)
self.list_hometask = QtWidgets.QListWidget(parent=HometaskList)
self.list_hometask.setSelectionRectVisible(False)
self.list_hometask.setObjectName("list_hometask")
self.gridLayout.addWidget(self.list_hometask, 3, 0, 1, 1)
self.label = QtWidgets.QLabel(parent=HometaskList)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
Expand All @@ -37,13 +41,12 @@ def setupUi(self, HometaskList):
self.label.setFont(font)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.list_hometask = QtWidgets.QListWidget(parent=HometaskList)
self.list_hometask.setSelectionRectVisible(False)
self.list_hometask.setObjectName("list_hometask")
self.gridLayout.addWidget(self.list_hometask, 2, 0, 1, 1)
self.add_more = QtWidgets.QPushButton(parent=HometaskList)
self.add_more.setObjectName("add_more")
self.gridLayout.addWidget(self.add_more, 3, 0, 1, 1)
self.gridLayout.addWidget(self.add_more, 4, 0, 1, 1)
self.refresh = QtWidgets.QPushButton(parent=HometaskList)
self.refresh.setObjectName("refresh")
self.gridLayout.addWidget(self.refresh, 2, 0, 1, 1)

self.retranslateUi(HometaskList)
QtCore.QMetaObject.connectSlotsByName(HometaskList)
Expand All @@ -52,6 +55,7 @@ def retranslateUi(self, HometaskList):
_translate = QtCore.QCoreApplication.translate
HometaskList.setWindowTitle(_translate("HometaskList", "Список ДЗ"))
self.label_2.setText(_translate("HometaskList", "Показать выполненные"))
self.label.setText(_translate("HometaskList", "Предстоящие задания"))
self.list_hometask.setSortingEnabled(False)
self.label.setText(_translate("HometaskList", "Предстоящие задания"))
self.add_more.setText(_translate("HometaskList", "Добавить новые"))
self.refresh.setText(_translate("HometaskList", "Обновить"))
14 changes: 9 additions & 5 deletions src/student_journal/presentation/ui/subject_list_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ def setupUi(self, SubjectList):
self.list_subject = QtWidgets.QListWidget(parent=SubjectList)
self.list_subject.setSelectionRectVisible(False)
self.list_subject.setObjectName("list_subject")
self.gridLayout.addWidget(self.list_subject, 1, 0, 1, 1)
self.gridLayout.addWidget(self.list_subject, 2, 0, 1, 1)
self.add_more = QtWidgets.QPushButton(parent=SubjectList)
self.add_more.setObjectName("add_more")
self.gridLayout.addWidget(self.add_more, 3, 0, 1, 1)
self.label = QtWidgets.QLabel(parent=SubjectList)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
Expand All @@ -31,9 +34,9 @@ def setupUi(self, SubjectList):
self.label.setFont(font)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.add_more = QtWidgets.QPushButton(parent=SubjectList)
self.add_more.setObjectName("add_more")
self.gridLayout.addWidget(self.add_more, 2, 0, 1, 1)
self.refresh = QtWidgets.QPushButton(parent=SubjectList)
self.refresh.setObjectName("refresh")
self.gridLayout.addWidget(self.refresh, 1, 0, 1, 1)

self.retranslateUi(SubjectList)
QtCore.QMetaObject.connectSlotsByName(SubjectList)
Expand All @@ -42,5 +45,6 @@ def retranslateUi(self, SubjectList):
_translate = QtCore.QCoreApplication.translate
SubjectList.setWindowTitle(_translate("SubjectList", "Список предметов"))
self.list_subject.setSortingEnabled(False)
self.label.setText(_translate("SubjectList", "Список предметов"))
self.add_more.setText(_translate("SubjectList", "Добавить новые"))
self.label.setText(_translate("SubjectList", "Список предметов"))
self.refresh.setText(_translate("SubjectList", "Обновить"))
16 changes: 10 additions & 6 deletions src/student_journal/presentation/ui/teacher_list_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,6 @@ def setupUi(self, TeacherList):
TeacherList.resize(580, 290)
self.gridLayout = QtWidgets.QGridLayout(TeacherList)
self.gridLayout.setObjectName("gridLayout")
self.list_teacher = QtWidgets.QListWidget(parent=TeacherList)
self.list_teacher.setSelectionRectVisible(False)
self.list_teacher.setObjectName("list_teacher")
self.gridLayout.addWidget(self.list_teacher, 1, 0, 1, 1)
self.label = QtWidgets.QLabel(parent=TeacherList)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
Expand All @@ -33,14 +29,22 @@ def setupUi(self, TeacherList):
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.add_more = QtWidgets.QPushButton(parent=TeacherList)
self.add_more.setObjectName("add_more")
self.gridLayout.addWidget(self.add_more, 2, 0, 1, 1)
self.gridLayout.addWidget(self.add_more, 3, 0, 1, 1)
self.list_teacher = QtWidgets.QListWidget(parent=TeacherList)
self.list_teacher.setSelectionRectVisible(False)
self.list_teacher.setObjectName("list_teacher")
self.gridLayout.addWidget(self.list_teacher, 2, 0, 1, 1)
self.refresh = QtWidgets.QPushButton(parent=TeacherList)
self.refresh.setObjectName("refresh")
self.gridLayout.addWidget(self.refresh, 1, 0, 1, 1)

self.retranslateUi(TeacherList)
QtCore.QMetaObject.connectSlotsByName(TeacherList)

def retranslateUi(self, TeacherList):
_translate = QtCore.QCoreApplication.translate
TeacherList.setWindowTitle(_translate("TeacherList", "Список учителей"))
self.list_teacher.setSortingEnabled(False)
self.label.setText(_translate("TeacherList", "Список учителей"))
self.add_more.setText(_translate("TeacherList", "Добавить новых"))
self.list_teacher.setSortingEnabled(False)
self.refresh.setText(_translate("TeacherList", "Обновить"))
5 changes: 0 additions & 5 deletions src/student_journal/presentation/widget/about.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,3 @@ def __init__(self) -> None:
super().__init__()
self.ui = Ui_About()
self.ui.setupUi(self)

self.ui.close_btn.clicked.connect(self.on_close)

def on_close(self) -> None:
self.close()
Loading
Loading