Skip to content
Snippets Groups Projects
Commit 1f4f7817 authored by Jakub Štercl's avatar Jakub Štercl
Browse files

distributions can now be duplicated

parent e77c0447
No related branches found
No related tags found
No related merge requests found
......@@ -32,11 +32,14 @@ class DistributionEdit(DistributionOverview):
self.main_window.goBack()
 
def returningToPrevious(self):
"""
give user option to save
"""
if self.saved is False:
msg = QMessageBox(self)
msg.setWindowTitle(self.tr("Uložit?"))
msg.setText(self.tr("Chcete rozdělení uložit?"))
msg.setInformativeText(self.tr("Pokud rozdělení neuložíte, všechny změny, které jste provedly budou ztraceny."))
msg.setInformativeText(self.tr("Pokud rozdělení neuložíte, všechny provedené změny budou ztraceny."))
btn_discard = msg.addButton(self.tr("Zahodit změny"), QMessageBox.NoRole)
btn_save = msg.addButton(self.tr("Uložit"), QMessageBox.YesRole)
msg.exec_()
......
from timeit import default_timer as timer
from PyQt5.QtCore import pyqtSlot, QPoint
from PyQt5.QtGui import QPainter, QPicture
from PyQt5.QtPrintSupport import QPrintDialog
......@@ -7,7 +5,6 @@ from PyQt5.QtWidgets import QDialog, QMenu, QFileDialog, QWidget, QMessageBox
from utils.widgets.drag_drop_table_unassigned import DragDropTableUnassigned
from utils.widgets.editable_title_widget import EditableTitle
from utils.widgets.members_drag_drop_table import MembersDragDropTable
from controllers.base_controller import BaseController
from model.distribution import Distribution
from model.member import Member
......@@ -17,11 +14,12 @@ from windows import distribution_overview
 
 
class DistributionOverview(BaseController, QWidget, distribution_overview.Ui_Form):
def __init__(self, main_window, teams, group, parent=None):
def __init__(self, main_window, teams, group, distribution_name=None, parent=None):
"""
:param main_window: MainWindow that this belongs to
:param teams: dictionary of teams {"team name": [Member1, Member2, ...], ...}
:param group: Group that has been distributed in those teams
:param distribution_name: name of distribution to be displayed
:param parent: parent widget for qt
"""
super(DistributionOverview, self).__init__(parent)
......@@ -48,7 +46,10 @@ class DistributionOverview(BaseController, QWidget, distribution_overview.Ui_For
self.tableOthers.contextMenuRequested.connect(self.onContextMenuRequested)
self.gridTeams.addWidget(self.tableOthers, len(self.teamTables) // 2, len(self.teamTables) % 2)
 
self.distribution_name = self.tr("Nepojmenované rozdělení")
if distribution_name is None:
self.distribution_name = self.tr("Nepojmenované rozdělení")
else:
self.distribution_name = distribution_name
title = EditableTitle(self.distribution_name)
self.layoutName.replaceWidget(self.titleWidget, title)
self.titleWidget = title
......@@ -193,6 +194,12 @@ class DistributionOverview(BaseController, QWidget, distribution_overview.Ui_For
for member in team:
f.write(member.name + ', ')
f.write('\n')
msg = QMessageBox(self)
msg.setWindowTitle("Hotovo")
msg.setText("Rozdělení exportováno")
msg.setStandardButtons(QMessageBox.Ok)
msg.exec_()
 
@pyqtSlot(Member, int, QPoint)
def onContextMenuRequested(self, member, from_table_id, point):
......@@ -227,6 +234,9 @@ class DistributionOverview(BaseController, QWidget, distribution_overview.Ui_For
self.teamTables[to_table_id].insertMember(member)
 
def returningToPrevious(self):
"""
give user option to save
"""
if not self.saved:
msg = QMessageBox(self)
msg.setWindowTitle(self.tr("Uložit?"))
......
......@@ -195,6 +195,7 @@ class GroupEdit(BaseController, QWidget, groupedit.Ui_Form):
return
menu = QMenu(self.treeDistributions)
menu.addAction(self.tr("Upravit"), lambda: self.goToDistributionEdit(element))
menu.addAction(self.tr("Duplikovat"), lambda: self.duplicate(element))
menu.exec_(self.treeDistributions.mapToGlobal(point))
 
def goToDistributionEdit(self, distribution):
......@@ -204,5 +205,13 @@ class GroupEdit(BaseController, QWidget, groupedit.Ui_Form):
"""
self.main_window.goToDistributionEdit(distribution, self.group)
 
def duplicate(self, distribution):
"""
duplicate distribution and go to it's overview
:param distribution:
"""
self.main_window.goToDistributionOverview(
{team.name: team.members for team in distribution.teams},
self.group,
distribution.name
)
......@@ -66,13 +66,14 @@ class MainWindow(QMainWindow, mainwindow.Ui_MainWindow):
msg.setStandardButtons(QMessageBox.Ok)
msg.exec_()
 
def goToDistributionOverview(self, teams, group):
def goToDistributionOverview(self, teams, group, distribution_name=None):
"""
change active window to DistributionOverview()
:param teams: teams in the distribution (dictionary of teams - {"team_name": [Member1, Member2, ...], ... }
:param group: group from which the members in distribution are
:param distribution_name: name of distribution to be displayed
"""
self._goToWidget(DistributionOverview(self, teams, group))
self._goToWidget(DistributionOverview(self, teams, group, distribution_name))
 
def goToMemberOverview(self, member):
"""
......
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget, QMessageBox
from controllers.base_controller import BaseController
from utils.widgets.history_count_table import HistoryCountTable
from utils.database import IntegrityError
from utils.widgets.editable_title_widget import EditableTitle
from windows import member_overview
 
 
class MemberOverview(QWidget, member_overview.Ui_Form):
class MemberOverview(BaseController, QWidget, member_overview.Ui_Form):
def __init__(self, mainwindow, member, parent=None):
"""
:param mainwindow: MainWindow that this belongs to
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment