Something went wrong on our end
-
Jakub Štercl authoredJakub Štercl authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
distribution_setup_controller.py 3.63 KiB
from math import ceil
from PyQt5 import QtWidgets as Qt
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog
from controllers.requirement_dialog import NewRequirementDialog, RequirementEditDialog
from model.requirements import Requirement
from utils.groups_table import GroupsTable
from utils.requirements_table import RequirementsTable
from windows import distributionsetup
# TODO throw exception for empty groups
class DistributionSetup(Qt.QWidget, distributionsetup.Ui_Form):
def __init__(self, main_window, group, parent=None):
"""
:param main_window: main window controller
:param group: (Group) that is being distributed
:param parent:
"""
super(DistributionSetup, self).__init__(parent)
self.setupUi(self)
self.tableRequirements = RequirementsTable(2, ["edit", "-"])
self.placeTable.insertWidget(1, self.tableRequirements)
self.tableRequirements.btnClicked.connect(self.onTableRequirementsBtnClicked)
self.tableRequirements.itemDoubleClicked.connect(self.editRequirement)
self.group = group
# set up header
self.lblGroupName.setText(self.group.name)
self.lblMemberCount.setText('(' + str(self.group.member_count) + ' členů)')
# set up spinners
self.spinTeamCount.setMinimum(1)
self.spinTeamCount.setMaximum(self.group.member_count)
self.spinMinTeamSize.setMinimum(0)
self.spinMinTeamSize.setMaximum(self.group.member_count)
self.spinMaxTeamSize.setMinimum(1)
self.spinMaxTeamSize.setMaximum(self.group.member_count)
self.spinMaxTeamSize.setValue(self.group.member_count)
# set up checkboxes
self.cbIgnoreTeamCount.stateChanged.connect(self.spinTeamCount.setDisabled)
self.cbIgnoreMinSize.stateChanged.connect(self.spinMinTeamSize.setDisabled)
self.cbIgnoreMaxSize.stateChanged.connect(self.spinMaxTeamSize.setDisabled)
self.btnAddRequirement.clicked.connect(self.showRequirementDialog)
self.btnDistribute.clicked.connect(self.distribute)
@pyqtSlot()
def showRequirementDialog(self):
dialog = NewRequirementDialog(self.group, self.tableRequirements.model.sourceModel().requirements, parent=self)
dialog.exec_()
if dialog.result() == dialog.Accepted:
if dialog.requirement is not None:
self.tableRequirements.insertRequirement(dialog.requirement)
@pyqtSlot(Requirement, int)
def onTableRequirementsBtnClicked(self, requirement, btn_nr):
if btn_nr == 0:
# it's btn "edit"
self.editRequirement(requirement)
elif btn_nr == 1:
# it's btn "delete"
self.deleteRequirement(requirement)
def editRequirement(self, requirement):
self.tableRequirements.model.sourceModel().removeRequirement(requirement)
dialog = RequirementEditDialog(self.group, requirement)
dialog.exec_()
if dialog.result() == dialog.Accepted:
if dialog.requirement is not None:
self.tableRequirements.insertRequirement(dialog.requirement)
else:
self.tableRequirements.insertRequirement(requirement)
def deleteRequirement(self, requirement):
msg = Qt.QMessageBox(self)
msg.setIcon(Qt.QMessageBox.Question)
msg.setWindowTitle("Odebrat omezení?")
msg.setText("Chcete odebrat toto omezení?")
msg.setStandardButtons(Qt.QMessageBox.Ok | Qt.QMessageBox.Cancel)
if msg.exec() == Qt.QMessageBox.Ok:
self.tableRequirements.model.sourceModel().removeRequirement(requirement)
def distribute(self):
...