60 lines
2.1 KiB
Python
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 |