summer/summer/templates/UserList.py

75 lines
2.4 KiB
Python

__author__ = 'tanshu'
from PyQt5 import uic, QtCore, QtWidgets
file = '/home/tanshu/Programming/summer/summer/QtDesignerFiles/ListForm.ui'
base, form = uic.loadUiType(file)
class UserList(base, form):
def __init__(self, router, users, parent=None):
super(UserList, self).__init__()
self.setupUi(self)
self.translateUi()
self.router = router
self.users = users
self.model = UsersTableModel(users)
self.tblItems.setModel(self.model)
self.tblItems.doubleClicked.connect(self.show_user)
self.btnAddNew.clicked.connect(self.add_new_user)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
self.tblItems.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
def translateUi(self):
self.setObjectName("UserList")
_translate = QtCore.QCoreApplication.translate
self.setWindowTitle(_translate("ListForm", "Users"))
self.btnAddNew.setText(_translate("ListForm", "Add User"))
def update_data(self, data):
self.users = data
self.model = UsersTableModel(self.users)
self.tblItems.setModel(self.model)
def show_user(self, index):
user = self.model.users[index.row()]
self.router.show_user(user['UserID'])
def add_new_user(self):
self.router.show_user(None)
class UsersTableModel(QtCore.QAbstractTableModel):
def __init__(self, users=None, parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self.users = users if users is not None else []
def rowCount(self, parent):
return len(self.users)
def columnCount(self, parent):
return 3
def data(self, index, role):
if role == QtCore.Qt.DisplayRole:
user = self.users[index.row()]
column = index.column()
if column == 0:
return user['Name']
elif column == 1:
return user['LockedOut']
elif column == 2:
return ", ".join(user['Roles'])
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
if section == 0:
return 'Name'
elif section == 1:
return 'Locked Out'
elif section == 2:
return 'Roles'
else:
return section + 1