Skip to content
Snippets Groups Projects
member_overview.py 1.82 KiB
Newer Older
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget, QMessageBox

from controllers.base_controller import BaseController
Jakub Štercl's avatar
Jakub Štercl committed
from utils.widgets.history_count_table import HistoryCountTable
from utils.database import IntegrityError
from utils.widgets.editable_title_widget import EditableTitle
Jakub Štercl's avatar
Jakub Štercl committed
from windows import member_overview


class MemberOverview(BaseController, QWidget, member_overview.Ui_Form):
Jakub Štercl's avatar
Jakub Štercl committed
    def __init__(self, mainwindow, member, parent=None):
        """
        :param mainwindow: MainWindow that this belongs to 
        :param member: member that will be displayed
        :param parent: parent widget for qt
        """
Jakub Štercl's avatar
Jakub Štercl committed
        super(MemberOverview, self).__init__(parent)
        self.setupUi(self)

        self.main_window = mainwindow

        self.member = member
        self.lblGroup.setText(self.member.group_name)

        title = EditableTitle(self.member.name, self)
        self.layoutTitle.replaceWidget(self.widgetTitle, title)
        self.widgetTitle = title

        self.tableCount = HistoryCountTable(data=member.history_count, parent=self)
        self.layoutHistory.insertWidget(1, self.tableCount)

        self.widgetTitle.textConfirmed.connect(self.changeName)


    @pyqtSlot(str)
    def changeName(self, name):
        """
        change members name
        :param name: 
        """
        try:
            self.member.rename(name)
            self.main_window.dataChanged()
        except IntegrityError as e:
            msg = QMessageBox(self)
            msg.setIcon(QMessageBox.Critical)
            msg.setText(self.tr("Ve skupině {0} již existuje člen s tímto jménem.").format(self.member.group_name))
            msg.setWindowTitle(self.tr("Nelze přejmenovat člena"))
            msg.setStandardButtons(QMessageBox.Ok)
            msg.exec()
            self.widgetTitle.editMode()