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

displaying group members

parent e46c3f71
No related branches found
No related tags found
No related merge requests found
from windows import mainwindow
from PyQt5 import QtWidgets as Qt
from model.qtmodels.GroupListModel import GroupListModel
from model.qtmodels.PersonListModel import PersonListModel
from windows import mainwindow
 
 
class Mainwindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):
......@@ -7,13 +9,20 @@ class Mainwindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):
super(Mainwindow, self).__init__(parent)
self.db = db
self.setupUi(self)
print(self.db.get_groups())
for group in self.db.get_groups():
self.listGroups.addItem(group.name)
self.listGroups.currentItemChanged.connect(self.show_people)
model = GroupListModel(self.db.get_groups())
self.listGroups.setModel(model)
self.listGroups.activated.connect(self.show_members)
self.listGroups.clicked.connect(self.show_members)
#for group in self.db.get_groups():
# self.listGroups.addItem(group.name)
#self.listGroups.currentItemChanged.connect(self.show_people)
#self.btnBrowse.clicked.connect(self.browse_folder)
#self.list1.currentItemChanged.connect(self.show_content)
 
def show_people(self, current):
self.listPeople.clear()
def show_members(self, current):
group = current.data(GroupListModel.modelRole)
members = self.db.get_group_members(group.id)
model = PersonListModel(members)
self.listPeople.setModel(model)
 
......@@ -10,7 +10,7 @@ class Database:
 
def get_groups(self, person_id = None):
if person_id is not None:
curs = self.connection.execute("SELECT * FROM GROUPS WHERE person_id = ?", person_id)
curs = self.connection.execute("SELECT * FROM GROUPS WHERE person_id = ?", str(person_id))
else:
curs = self.connection.execute("SELECT * FROM GROUPS")
res = []
......@@ -19,12 +19,12 @@ class Database:
return res
 
def get_group_members(self, group_id):
curs = self.connection.execute('''SELECT *
FROM person
JOIN person_to_group
JOIN groups
WHERE groups.group_id = ?''', group_id)
curs = self.connection.execute('''SELECT person.*
FROM person
JOIN person_to_group USING (person_id)
JOIN groups USING (group_id)
WHERE groups.group_id = ?''', str(group_id))
res = []
for row in curs:
print(row)
#res.append(Person())
\ No newline at end of file
res.append(Person(row[0], row[1], row[2]))
return res
......@@ -7,11 +7,14 @@ from database import Database
 
 
def main():
db = Database()
app = Qt.QApplication(sys.argv)
form = Mainwindow(db)
form.show()
app.exec_()
try:
db = Database()
app = Qt.QApplication(sys.argv)
form = Mainwindow(db)
form.show()
app.exec_()
except Exception as e:
print(e)
 
if __name__ == '__main__':
main()
\ No newline at end of file
......@@ -4,4 +4,4 @@ class Person:
def __init__(self, id, name, surname):
self.id = id
self.name = name
self.surname = surname
\ No newline at end of file
self.surname = surname
from PyQt5 import QtGui, QtCore, uic
class GroupListModel(QtCore.QAbstractListModel):
modelRole = -1
def __init__(self, groups=[], parent=None):
super(GroupListModel, self).__init__(parent)
self._groups = groups
def rowCount(self, parent=None, *args, **kwargs):
return len(self._groups)
def data(self, index, role=None):
if role == QtCore.Qt.DisplayRole:
return self._groups[index.row()].name
if role == GroupListModel.modelRole:
return self._groups[index.row()]
from PyQt5 import QtGui, QtCore, uic
class PersonListModel(QtCore.QAbstractListModel):
modelRole = -1
def __init__(self, people=[], parent=None):
super(PersonListModel, self).__init__(parent)
self._people = people
def rowCount(self, parent=None, *args, **kwargs):
return len(self._people)
def data(self, index, role=None):
person = self._people[index.row()]
if role == QtCore.Qt.DisplayRole:
return person.name + " " + person.surname
if role == PersonListModel.modelRole:
return self._people[index.row()]
......@@ -31,15 +31,14 @@ class Ui_MainWindow(object):
self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout.setSpacing(6)
self.horizontalLayout.setObjectName("horizontalLayout")
self.listGroups = QtWidgets.QListWidget(self.centralWidget)
self.listGroups = QtWidgets.QListView(self.centralWidget)
self.listGroups.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed)
self.listGroups.setViewMode(QtWidgets.QListView.ListMode)
self.listGroups.setObjectName("listGroups")
self.horizontalLayout.addWidget(self.listGroups)
self.tablePeople = QtWidgets.QTableWidget(self.centralWidget)
self.tablePeople.setObjectName("tablePeople")
self.tablePeople.setColumnCount(0)
self.tablePeople.setRowCount(0)
self.horizontalLayout.addWidget(self.tablePeople)
self.listPeople = QtWidgets.QListView(self.centralWidget)
self.listPeople.setObjectName("listPeople")
self.horizontalLayout.addWidget(self.listPeople)
self.verticalLayout_2.addLayout(self.horizontalLayout)
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
......@@ -54,6 +53,4 @@ class Ui_MainWindow(object):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.btnAddGroup.setText(_translate("MainWindow", "Vytvořit skupinu"))
self.listGroups.setSortingEnabled(True)
self.tablePeople.setSortingEnabled(True)
 
......@@ -32,21 +32,17 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListWidget" name="listGroups">
<widget class="QListView" name="listGroups">
<property name="editTriggers">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
</property>
<property name="viewMode">
<enum>QListView::ListMode</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QTableWidget" name="tablePeople">
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
<widget class="QListView" name="listPeople"/>
</item>
</layout>
</item>
......
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