summer/summer/templates/RoleDetail.py

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