summer/summer/templates/UserDetail.py

60 lines
2.1 KiB
Python

__author__ = 'tanshu'
from PyQt5 import uic, QtCore
file = '/home/tanshu/Programming/summer/summer/QtDesignerFiles/UserDetail.ui'
base, form = uic.loadUiType(file)
class UserDetail(base, form):
def __init__(self, router, user, parent=None):
super(UserDetail, self).__init__()
self.setupUi(self)
self.router = router
self.user = user
self.txtName.setText(user['Name'])
self.txtPassword.setText('')
self.chkLockedOut.setCheckState(QtCore.Qt.Checked if user['LockedOut'] else QtCore.Qt.Unchecked)
self.accepted.connect(self.save_user)
self.lvwRoles.setModel(RolesListModel(self.user['Roles']))
self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
def save_user(self):
self.user['Name'] = self.txtName.text()
self.user['Password'] = self.txtPassword.text()
self.user['LockedOut'] = self.chkLockedOut.isChecked()
self.router.save_user(self.user)
class RolesListModel(QtCore.QAbstractListModel):
def __init__(self, roles=None, parent=None):
QtCore.QAbstractListModel.__init__(self, parent)
self.roles = roles if roles is not None else []
def rowCount(self, parent):
return len(self.roles)
def data(self, index, role):
if role == QtCore.Qt.DisplayRole:
item = self.roles[index.row()]
return item['Name']
elif role == QtCore.Qt.CheckStateRole:
item = self.roles[index.row()]
return QtCore.Qt.Checked if item['Enabled'] else QtCore.Qt.Unchecked
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
return 'Roles'
else:
return section + 1
def setData(self, index, value, role=QtCore.Qt.EditRole):
if role == QtCore.Qt.CheckStateRole:
item = self.roles[index.row()]
item['Enabled'] = False if value == 0 else True
return True
def flags(self, index):
return QtCore.QAbstractListModel.flags(self, index) | QtCore.Qt.ItemIsUserCheckable