Skip to content
Snippets Groups Projects
Commit 8341716f 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 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): class Mainwindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):
...@@ -7,13 +9,20 @@ class Mainwindow(Qt.QMainWindow, mainwindow.Ui_MainWindow): ...@@ -7,13 +9,20 @@ class Mainwindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):
super(Mainwindow, self).__init__(parent) super(Mainwindow, self).__init__(parent)
self.db = db self.db = db
self.setupUi(self) self.setupUi(self)
print(self.db.get_groups()) model = GroupListModel(self.db.get_groups())
for group in self.db.get_groups(): self.listGroups.setModel(model)
self.listGroups.addItem(group.name) self.listGroups.activated.connect(self.show_members)
self.listGroups.currentItemChanged.connect(self.show_people) 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.btnBrowse.clicked.connect(self.browse_folder)
#self.list1.currentItemChanged.connect(self.show_content) #self.list1.currentItemChanged.connect(self.show_content)
   
def show_people(self, current): def show_members(self, current):
self.listPeople.clear() 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: ...@@ -10,7 +10,7 @@ class Database:
   
def get_groups(self, person_id = None): def get_groups(self, person_id = None):
if person_id is not 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: else:
curs = self.connection.execute("SELECT * FROM GROUPS") curs = self.connection.execute("SELECT * FROM GROUPS")
res = [] res = []
...@@ -19,12 +19,12 @@ class Database: ...@@ -19,12 +19,12 @@ class Database:
return res return res
   
def get_group_members(self, group_id): def get_group_members(self, group_id):
curs = self.connection.execute('''SELECT * curs = self.connection.execute('''SELECT person.*
FROM person FROM person
JOIN person_to_group JOIN person_to_group USING (person_id)
JOIN groups JOIN groups USING (group_id)
WHERE groups.group_id = ?''', group_id) WHERE groups.group_id = ?''', str(group_id))
res = [] res = []
for row in curs: for row in curs:
print(row) res.append(Person(row[0], row[1], row[2]))
#res.append(Person()) return res
\ No newline at end of file
...@@ -7,11 +7,14 @@ from database import Database ...@@ -7,11 +7,14 @@ from database import Database
   
   
def main(): def main():
db = Database() try:
app = Qt.QApplication(sys.argv) db = Database()
form = Mainwindow(db) app = Qt.QApplication(sys.argv)
form.show() form = Mainwindow(db)
app.exec_() form.show()
app.exec_()
except Exception as e:
print(e)
   
if __name__ == '__main__': if __name__ == '__main__':
main() main()
\ No newline at end of file
...@@ -4,4 +4,4 @@ class Person: ...@@ -4,4 +4,4 @@ class Person:
def __init__(self, id, name, surname): def __init__(self, id, name, surname):
self.id = id self.id = id
self.name = name self.name = name
self.surname = surname self.surname = surname
\ No newline at end of file
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): ...@@ -31,15 +31,14 @@ class Ui_MainWindow(object):
self.horizontalLayout.setContentsMargins(11, 11, 11, 11) self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout.setSpacing(6) self.horizontalLayout.setSpacing(6)
self.horizontalLayout.setObjectName("horizontalLayout") 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.setViewMode(QtWidgets.QListView.ListMode)
self.listGroups.setObjectName("listGroups") self.listGroups.setObjectName("listGroups")
self.horizontalLayout.addWidget(self.listGroups) self.horizontalLayout.addWidget(self.listGroups)
self.tablePeople = QtWidgets.QTableWidget(self.centralWidget) self.listPeople = QtWidgets.QListView(self.centralWidget)
self.tablePeople.setObjectName("tablePeople") self.listPeople.setObjectName("listPeople")
self.tablePeople.setColumnCount(0) self.horizontalLayout.addWidget(self.listPeople)
self.tablePeople.setRowCount(0)
self.horizontalLayout.addWidget(self.tablePeople)
self.verticalLayout_2.addLayout(self.horizontalLayout) self.verticalLayout_2.addLayout(self.horizontalLayout)
MainWindow.setCentralWidget(self.centralWidget) MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar = QtWidgets.QMenuBar(MainWindow)
...@@ -54,6 +53,4 @@ class Ui_MainWindow(object): ...@@ -54,6 +53,4 @@ class Ui_MainWindow(object):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.btnAddGroup.setText(_translate("MainWindow", "Vytvořit skupinu")) self.btnAddGroup.setText(_translate("MainWindow", "Vytvořit skupinu"))
self.listGroups.setSortingEnabled(True)
self.tablePeople.setSortingEnabled(True)
   
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>450</width>
<height>360</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="labelGroupName">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QTableWidget" name="tablePeople">
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="btnAddPerson">
<property name="text">
<string>Add to group</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
...@@ -32,21 +32,17 @@ ...@@ -32,21 +32,17 @@
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
<widget class="QListWidget" name="listGroups"> <widget class="QListView" name="listGroups">
<property name="editTriggers">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
</property>
<property name="viewMode"> <property name="viewMode">
<enum>QListView::ListMode</enum> <enum>QListView::ListMode</enum>
</property> </property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QTableWidget" name="tablePeople"> <widget class="QListView" name="listPeople"/>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
</layout> </layout>
</item> </item>
......
FORMS += \
mainwindow.ui \
groupedit.ui
This diff is collapsed.
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