56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
__author__ = 'tanshu'
|
|
from PyQt5 import uic, QtCore
|
|
|
|
|
|
file = '/home/tanshu/Programming/summer/summer/QtDesignerFiles/RoleDetail.ui'
|
|
base, form = uic.loadUiType(file)
|
|
|
|
|
|
class RoleDetail(base, form):
|
|
def __init__(self, router, role, parent=None):
|
|
super(RoleDetail, self).__init__()
|
|
self.setupUi(self)
|
|
self.router = router
|
|
self.role = role
|
|
self.txtName.setText(role['Name'])
|
|
self.accepted.connect(self.save_role)
|
|
self.lvwPermissions.setModel(RolesListModel(self.role['Permissions']))
|
|
self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
|
|
|
|
def save_role(self):
|
|
self.role['Name'] = self.txtName.text()
|
|
self.router.save_role(self.role)
|
|
|
|
|
|
class RolesListModel(QtCore.QAbstractListModel):
|
|
def __init__(self, permissions=None, parent=None):
|
|
QtCore.QAbstractListModel.__init__(self, parent)
|
|
self.permissions = permissions if permissions is not None else []
|
|
|
|
def rowCount(self, parent):
|
|
return len(self.permissions)
|
|
|
|
def data(self, index, role):
|
|
if role == QtCore.Qt.DisplayRole:
|
|
item = self.permissions[index.row()]
|
|
return item['Name']
|
|
elif role == QtCore.Qt.CheckStateRole:
|
|
item = self.permissions[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 'Permissions'
|
|
else:
|
|
return section + 1
|
|
|
|
def setData(self, index, value, role=QtCore.Qt.EditRole):
|
|
if role == QtCore.Qt.CheckStateRole:
|
|
item = self.permissions[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 |