def __init__(self,username,parent): QtGui.QWidget.__init__(self,parent) ar.ActionRequester.__init__(self) self.change_info = {} self.user_info = {} self.gid_add_list = [] self.gid_rm_list = [] self.force_close_without_save = False self.permissions = cm.get_proxy_handle().list_my_permissions() self.username = username self.setupUi(self) self.groupmodel = gmod.GroupModel(self.trv_groups) self.modelhelper = pmh.PluggableModelHelper(self.groupmodel) self.modelhelper.setView(self.trv_groups) for colidx in xrange(self.groupmodel.columnCount()): self.modelhelper.setColumnReadOnly(colidx) self.loadUserData() self.groupmodel.setAcceptedMimeTypes(['application/x-skolesysgroups-pyobj']) # Connect buttons self.connect(self.btn_apply,QtCore.SIGNAL('clicked()'),self.applyChanges) # Primary group Combobox connections self.connect(self.cmb_primary_group,QtCore.SIGNAL('activated(int)'),self.primaryGroupChanged) # Connect first name , last name line edits self.connect(self.led_firstname,QtCore.SIGNAL('textChanged(const QString&)'),self.firstNameChanged) self.connect(self.led_lastname,QtCore.SIGNAL('textChanged(const QString&)'),self.lastNameChanged) # group list connections self.trv_groups.connectEvent("dropEvent",self.hook_dropOnGroupView) self.trv_groups.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.trv_groups,QtCore.SIGNAL("customContextMenuRequested(const QPoint&)"),self.groupsContextMenu) # Connect change signals self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL('userMembershipsChanged'),self.updateGroupsView) # Change password self.connect(self.btn_passwd,QtCore.SIGNAL('clicked()'),self.changePassword) self.tr("teacher","singular") self.tr("student","singular") self.tr("parent","singular") self.tr("other","singular") self.setupPermissions(cm.get_proxy_handle().list_my_permissions()) self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL('permissionsChanged'),self.setupPermissions)
def applyChanges(self): proxy = cm.get_proxy_handle() # Groups permissions = proxy.list_my_permissions() allow_groupadd = permissions.count('membership.create') allow_groupdel = permissions.count('membership.remove') if self.change_info.has_key('groups_by_name'): groups_before = self.user_info.pop('groups_by_name') groups_now = self.change_info.pop('groups_by_name') for groupname in groups_now: if not groups_before.count(groupname) and allow_groupadd: proxy.groupadd(self.username,groupname) for groupname in groups_before: if not groups_now.count(groupname) and allow_groupdel: proxy.groupdel(self.username,groupname) # Standard info givenname,familyname,primarygroup,firstyear = None,None,None,None if self.change_info.has_key('givenName'): givenname = self.change_info['givenName'] if self.change_info.has_key('sn'): familyname = self.change_info['sn'] if self.change_info.has_key('gidNumber'): primarygroup = self.change_info['gidNumber'] if self.change_info.has_key('firstSchoolYear'): firstyear = self.change_info['firstSchoolYear'] res = proxy.changeuser(self.username,givenname,familyname,None,primarygroup,firstyear) print res if res >= 0: mainwin.get_mainwindow().emitUserChanged(self.username) self.loadUserData() self.btn_apply.setEnabled(False)
def applyChanges(self): proxy = cm.get_proxy_handle() permissions = proxy.list_my_permissions() allow_groupadd = permissions.count("membership.create") allow_groupdel = permissions.count("membership.remove") if self.change_info.has_key("users_by_name"): users_before = self.group_info.pop("users_by_name") users_now = self.change_info.pop("users_by_name") for uid in users_now: if not users_before.count(uid) and allow_groupadd: proxy.groupadd(uid, self.groupname) for uid in users_before: if not users_now.count(uid) and allow_groupdel: proxy.groupdel(uid, self.groupname) description = None if self.change_info.has_key("description"): description = self.change_info["description"] res = 0 if description != None: res = proxy.changegroup(self.groupname, description) if res >= 0: mainwin.get_mainwindow().emitGroupChanged(self.groupname) if self.tbl_serviceoptions.isDirty(): self.tbl_serviceoptions.applyChanges() self.loadGroupData() self.btn_apply.setEnabled(False)
def setupGroupPage(self): proxy = cm.get_proxy_handle() # Primary group combo self.cmb_primary_group.clear() for groupname,details in proxy.list_groups(groupdef.grouptype_as_id('primary')).items(): self.cmb_primary_group.addItem( QtCore.QString().fromUtf8(details['displayedName']), QtCore.QVariant(details['gidNumber'])) self.cmb_primary_group.setCurrentIndex(-1) self.connect(self.cmb_primary_group,QtCore.SIGNAL("activated(int)"),self.updateGroupPage) # Secondary groups self.groupmodel = gmod.GroupModel(self.trv_groups) self.modelhelper = pmh.PluggableModelHelper(self.groupmodel) self.modelhelper.setView(self.trv_groups) for colidx in xrange(self.groupmodel.columnCount()): self.modelhelper.setColumnReadOnly(colidx) self.trv_groups.setColumnHidden(self.groupmodel.columninfo['gid']['columnindex'],True) self.trv_groups.setColumnHidden(self.groupmodel.columninfo['groupname']['columnindex'],True) # group list connections self.trv_groups.connectEvent("dropEvent",self.hook_dropOnGroupView) self.trv_groups.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.trv_groups,QtCore.SIGNAL("customContextMenuRequested(const QPoint&)"),self.groupsContextMenu) self.connect(self.btn_add_groups,QtCore.SIGNAL("clicked()"),self.viewGroupsAvailable) self.groupmodel.setAcceptedMimeTypes(['application/x-skolesysgroups-pyobj'])
def __init__(self, groupname, parent): QtGui.QWidget.__init__(self, parent) self.change_info = {} self.groupname = groupname self.setupUi(self) self.setupServiceCombo() self.connect(self.btn_apply, QtCore.SIGNAL("clicked()"), self.applyChanges) self.connect(self.tbl_serviceoptions.itemDelegate(), QtCore.SIGNAL("dataChanged"), self.serviceOptionChanged) self.force_close_without_save = False self.permissions = cm.get_proxy_handle().list_my_permissions() # Setup group model self.usermodel = umod.UserModel(self.trv_users) self.modelhelper = pmh.PluggableModelHelper(self.usermodel) self.modelhelper.setView(self.trv_users) for colidx in xrange(self.usermodel.columnCount()): self.modelhelper.setColumnReadOnly(colidx) self.loadGroupData() self.usermodel.setAcceptedMimeTypes(["application/x-skolesysusers-pyobj"]) self.connect(self.btn_add_service, QtCore.SIGNAL("clicked()"), self.addService) self.connect(self.ted_description, QtCore.SIGNAL("textChanged()"), self.descriptionChanged) # User list connections self.trv_users.connectEvent("dropEvent", self.hook_dropOnUserView) self.trv_users.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.trv_users, QtCore.SIGNAL("customContextMenuRequested(const QPoint&)"), self.usersContextMenu) # Connect change signals self.connect(mainwin.get_mainwindow(), QtCore.SIGNAL("groupMembershipsChanged"), self.updateUsersView) self.connect(mainwin.get_mainwindow(), QtCore.SIGNAL("permissionsChanged"), self.setupPermissions) self.setupPermissions(self.permissions)
def accessChanged(self,item): proxy = cm.get_proxy_handle() access_ident = str(item.data(0,32).toString()) if item.checkState(0)==QtCore.Qt.Checked: proxy.grant_access(self.current_uid,access_ident) else: proxy.revoke_access(self.current_uid,access_ident)
def setupAccessView(self): self.trw_access_idents.setColumnCount(1) self.trw_access_idents.setHeaderLabels([self.tr('Access')]) proxy = cm.get_proxy_handle() access_idents = proxy.list_access_identifiers() access_groups = {} translator = srvmsg.get_translator() for ai in access_idents: ai_parts = ai.split('.') if not access_groups.has_key(ai_parts[0]): access_groups[ai_parts[0]] = { 'access_idents':[], 'text': translator.q_tr('access','%s_description' % ai_parts[0])} access_groups[ai_parts[0]]['access_idents'] += [{ 'access_ident': ai, 'text':translator.q_tr('access','%s_infinitive' % ai) }] for grp,ai_list in access_groups.items(): grp_item = QtGui.QTreeWidgetItem(self.trw_access_idents,[ai_list['text']]) grp_item.setData(0,32,QtCore.QVariant(grp)) self.trw_access_idents.addTopLevelItem(grp_item) for access_ident in ai_list['access_idents']: ai_item = QtGui.QTreeWidgetItem(grp_item,[access_ident['text']]) ai_item.setCheckState(0,QtCore.Qt.Unchecked) ai_item.setData(0,32,QtCore.QVariant(access_ident['access_ident'])) grp_item.addChild(ai_item) self.trw_access_idents.expandItem(grp_item) self.trw_access_idents.setEnabled(False)
def setContext(self,servicename,groupname): proxy = cm.get_proxy_handle() options = proxy.list_groupservice_options_available(servicename,groupname) self.option_info = proxy.get_groupservice_option_values(groupname,servicename) self.groupname = groupname self.servicename = servicename self.setOptions(options)
def check_permission(access_ident,show_message=True): access = cm.get_proxy_handle().check_my_permission(access_ident) if access: return True else: if show_message: access_denied_dialog(access_ident) return False
def setupServiceCombo(self): proxy = cm.get_proxy_handle() services_in_use = proxy.list_groupservices(self.groupname) if services_in_use != -1: for serv in services_in_use: self.cmb_services.addItem(serv, QtCore.QVariant(serv)) self.connect(self.cmb_services, QtCore.SIGNAL("activated(int)"), self.currentServiceChanged) self.currentServiceChanged(self.cmb_services.currentIndex())
def hook_dropOnGroupView(self,obj,de): dragged_groups = pickle.loads(de.mimeData().data('application/x-skolesysgroups-pyobj')) proxy = cm.get_proxy_handle() for grp in dragged_groups: self.groupmodel._addGroup(grp['gid'],grp['groupname'],grp['displayed_name'],grp['grouptype_id']) self.trv_groups.resizeColumnsToContent() # Update the group add selector self.updateGroupAddExcludeFilter()
def __init__(self,parent): esm.EnhancedStandardItemModel.__init__(self,parent) self.proxy = cm.get_proxy_handle() self.files = {} self.exclude_grouptype_ids=[] self.exclude_gid_numbers=[] self.displayed_groupnames = {} self.proxy = cm.get_proxy_handle() groups = self.proxy.list_groups() for grpname,details in groups.items(): self.displayed_groupnames[grpname] = details['displayedName'] self.columninfo = { 'filename': {'text': self.tr('File name'), 'columnindex': 0}, 'dirname': {'text': self.tr('Directory'), 'columnindex': 1}, 'username': {'text': self.tr('User'), 'columnindex': 2}, 'groupname': {'text': self.tr('Group'), 'columnindex': 3}, 'permissions': {'text': self.tr('Permissions'), 'columnindex': 4}, 'filesize': {'text': self.tr('Size'), 'columnindex': 5}} self.initialSetup()
def removeGroups(self): mimedata = self.groupmodel.generateMimeData(self.trv_groups.selectedIndexes()) groups = pickle.loads(mimedata['application/x-skolesysgroups-pyobj']) proxy = cm.get_proxy_handle() for grp in groups: self.groupmodel._removeGroup(grp['gid']) self.trv_groups.resizeColumnsToContent() # Update the group add selector self.updateGroupAddExcludeFilter()
def applyChanges(self): proxy = cm.get_proxy_handle() for option_name,value in self.change_info.items(): if type(value) == str and value == '': proxy.unset_groupservice_option(self.servicename,self.groupname,option_name) else: proxy.set_groupservice_option_value(self.servicename,self.groupname,option_name,value) self.option_info[option_name] = value if len(self.change_info.keys()): proxy.restart_groupservice(self.groupname,self.servicename) self.change_info = {}
def check_permission_multi_and(access_idents,show_message=True): proxy = cm.get_proxy_handle() my_access = proxy.list_my_permissions() sufficient = True for acc_ident in access_idents: if not my_access.count(acc_ident): sufficient = False break if not sufficient: if show_message: access_denied_dialog(acc_ident) return sufficient
def __init__(self,parent): QtGui.QWidget.__init__(self,parent) ar.ActionRequester.__init__(self) self.setupUi(self) self.btn_new_user.setIcon(QtGui.QIcon(qt4tools.svg2pixmap(paths.path_to('art/new_user.svg'),72,72))) self.connect(self.btn_new_user,QtCore.SIGNAL("clicked()"),self.execCreateUserWizard) self.connect(self.btn_new_group,QtCore.SIGNAL("clicked()"),self.execCreateGroupWizard) self.connect(self.btn_open_fileman,QtCore.SIGNAL("clicked()"),self.openFileManager) self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL("permissionsChanged"),self.setupPermissions) self.btn_new_group.setIcon(QtGui.QIcon(qt4tools.svg2pixmap(paths.path_to('art/new_group.svg'),72,72))) self.btn_open_fileman.setIcon(QtGui.QIcon(qt4tools.svg2pixmap(paths.path_to('art/stats.svg'),72,72))) self.setupPermissions(cm.get_proxy_handle().list_my_permissions())
def __init__(self,parent): QtGui.QWidget.__init__(self,parent) self.current_uid = None self.proxy = cm.get_proxy_handle() self.setupUi(self) self.setupModel() self.setupUserView() self.setupAccessView() self.updateUserView() self.trv_userlist.connectEvent('currentChanged',self.userChanged) self.connect(self.trw_access_idents,QtCore.SIGNAL('itemChanged ( QTreeWidgetItem * , int )'),self.accessChanged) self.connect(self.btn_close,QtCore.SIGNAL('clicked()'),self.accept)
def checkLogin(self): proxy = cm.get_proxy_handle() login=str(self.led_login.text().toUtf8()) self.led_login.setText(login.lower()) pal = QtGui.QPalette(self.pal_org) if proxy.user_exists(login): pal.setColor(QtGui.QPalette.Text,QtCore.Qt.red) self.login_valid = False elif len(login)>=2: self.login_valid = True self.led_login.setPalette(pal) self.updateLoginPage()
def accept(self): answer = QtGui.QMessageBox.question(self, self.tr('Remove group(s)'), self.tr('Are you sure you want to perform this remove operation?'), QtGui.QMessageBox.Yes,QtGui.QMessageBox.No) if answer==QtGui.QMessageBox.No: return proxy = cm.get_proxy_handle() for group in self.groups: proxy.removegroup(group['groupname'],self.chk_backup_home.isChecked(),self.chk_remove_home.isChecked()) # Signal group deletion mainwin.get_mainwindow().emitGroupDeleted('dummy') QtGui.QDialog.accept(self)
def accept(self): answer = QtGui.QMessageBox.question(self, self.tr('Remove user(s)'), self.tr('Are you sure you want to perform this remove operation?'), QtGui.QMessageBox.Yes,QtGui.QMessageBox.No) if answer==QtGui.QMessageBox.No: return proxy = cm.get_proxy_handle() for user in self.users: proxy.removeuser(user['uid'],self.chk_backup_home.isChecked(),self.chk_remove_home.isChecked()) # Signal user deletion mainwin.get_mainwindow().emitUserDeleted('dummy') QtGui.QDialog.accept(self)
def addService(self): add_service_dlg = QtGui.QDialog(self) gridlayout = QtGui.QGridLayout(add_service_dlg) gridlayout.setMargin(4) gridlayout.setSpacing(4) servicelist = QtGui.QListWidget(add_service_dlg) gridlayout.addWidget(servicelist, 0, 0, 1, 3) spacer = QtGui.QSpacerItem(100, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) btn_add = QtGui.QPushButton(add_service_dlg) btn_add.setText(self.tr("Add")) btn_add.setEnabled(False) add_service_dlg.connect(btn_add, QtCore.SIGNAL("clicked()"), add_service_dlg.accept) btn_cancel = QtGui.QPushButton(add_service_dlg) btn_cancel.setText(self.tr("Cancel")) add_service_dlg.connect(btn_cancel, QtCore.SIGNAL("clicked()"), add_service_dlg.reject) def enableAddButton(): btn_add.setEnabled(True) return def itemDoubleClicked(item): add_service_dlg.accept() return add_service_dlg.connect(servicelist, QtCore.SIGNAL("itemSelectionChanged()"), enableAddButton) add_service_dlg.connect(servicelist, QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), itemDoubleClicked) gridlayout.addItem(spacer, 1, 0, 1, 1) gridlayout.addWidget(btn_add, 1, 1, 1, 1) gridlayout.addWidget(btn_cancel, 1, 2, 1, 1) proxy = cm.get_proxy_handle() all_services = proxy.list_groupservices() services_in_use = proxy.list_groupservices(self.groupname) for serv in services_in_use: all_services.remove(serv) for serv in all_services: servicelist.addItem(serv) if add_service_dlg.exec_() == QtGui.QDialog.Accepted: # OK a service was selected service = str(servicelist.currentItem().text()) res = proxy.attach_groupservice(self.groupname, service) print res if res >= 0: self.cmb_services.addItem(service, QtCore.QVariant(service)) self.currentServiceChanged(self.cmb_services.currentIndex())
def __init__(self,parent): esm.EnhancedStandardItemModel.__init__(self,parent) self.proxy = cm.get_proxy_handle() self.groups = {} self.exclude_grouptype_ids=[] self.exclude_gid_numbers=[] self.columninfo = { 'gid': {'text': self.tr('Group ID'), 'columnindex': 3}, 'groupname': {'text': self.tr('Group name'), 'columnindex': 1}, 'displayed_name': {'text': self.tr('Displayed name'), 'columnindex': 0}, 'grouptype': {'text': self.tr('Group type'), 'columnindex': 2} } self.initialSetup() self.tr("primary","singular") self.tr("system","singular") self.tr("service","singular")
def loadGroupData(self): proxy = cm.get_proxy_handle() res = proxy.list_groups(groupname=self.groupname) if res.has_key(self.groupname): self.change_info = {} self.group_info = res[self.groupname] if res[self.groupname].has_key("description"): self.ted_description.setPlainText(QtCore.QString.fromUtf8(res[self.groupname]["description"])) self.lbl_groupname.setText(QtCore.QString.fromUtf8(res[self.groupname]["displayedName"])) if res[self.groupname]["grouptype_id"] == groupdef.grouptype_as_id("primary"): self.grp_services.setEnabled(False) self.grp_members.setEnabled(False) if res[self.groupname]["grouptype_id"] == groupdef.grouptype_as_id("system"): self.grp_services.setEnabled(False) self.updateUsersView()
def __init__(self,parent): QtGui.QWidget.__init__(self,parent) self.proxy = cm.get_proxy_handle() self.setupUi(self) self.setupModel() self.setupGroupTypeCombo() self.setupGroupView() self.updateGroupView() self.trv_grouplist.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.trv_grouplist,QtCore.SIGNAL("customContextMenuRequested(const QPoint&)"),self.grouplistContextMenu) self.connect(self.trv_grouplist,QtCore.SIGNAL("itemDoubleClicked(QTreeWidgetItem *,int)"),self.doubleClickEdit) # Recieve notice on altered, deleted or changed groups self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL("groupChanged"),self.updateGroupView) self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL("groupDeleted"),self.updateGroupView) self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL("groupCreated"),self.updateGroupView)
def loadUserData(self): proxy = cm.get_proxy_handle() self.user_info = proxy.list_users(uid=self.username) if self.user_info.has_key(self.username): self.change_info = {} self.user_info = self.user_info[self.username] self.lbl_usertype.setText(self.tr(userdef.usertype_as_text(self.user_info['usertype_id']),'singular')) self.lbl_username.setText(QtCore.QString().fromUtf8(self.user_info['uid'])) self.led_firstname.setText(QtCore.QString().fromUtf8(self.user_info['givenName'])) self.led_lastname.setText(QtCore.QString().fromUtf8(self.user_info['sn'])) gid_number = int(self.user_info['gidNumber']) self.cmb_primary_group.clear() for groupname,details in proxy.list_groups(groupdef.grouptype_as_id('primary')).items(): self.cmb_primary_group.addItem( QtCore.QString().fromUtf8(details['displayedName']), QtCore.QVariant(details['gidNumber'])) self.cmb_primary_group.setCurrentIndex(self.cmb_primary_group.findData(QtCore.QVariant(self.user_info['gidNumber']))) self.updateGroupsView()
def finish(self): uid = str(self.led_login.text().toUtf8()) givenname = str(self.led_given_name.text().toUtf8()) familyname = str(self.led_family_name.text().toUtf8()) usertype_id,ok = self.cmb_usertype.itemData(self.cmb_usertype.currentIndex()).toInt() firstyear = None if usertype_id == userdef.usertype_as_id('student'): firstyear = self.sbx_first_school_year.value() primarygroup,ok = self.cmb_primary_group.itemData(self.cmb_primary_group.currentIndex()).toInt() passwd = str(self.led_passwd.text().toUtf8()) proxy = cm.get_proxy_handle() res = proxy.createuser(uid,givenname,familyname,passwd,usertype_id,primarygroup,firstyear) if res>=0: import ss_mainwindow as mainwin mainwin.get_mainwindow().emitUserCreated(uid) for groupname in self.groupmodel.groupNames(): proxy.groupadd(uid,groupname) self.accept()
def finish(self): description = str(self.ted_description.toPlainText().toUtf8()) proxy = cm.get_proxy_handle() displayed_name = str(self.led_groupname.text().toUtf8()) grouptype_id,ok = self.cmb_grouptype.itemData(self.cmb_grouptype.currentIndex()).toInt() org_groupname = self.groupname groupname = self.groupname num = 1 while proxy.group_exists(groupname): groupname = '%s%d' % (org_groupname,num) print groupname num += 1 res = proxy.creategroup(groupname,displayed_name,grouptype_id,description) if res>=0: import ss_mainwindow as mainwin mainwin.get_mainwindow().emitGroupCreated(groupname) self.accept()
def __init__(self,parent): esm.EnhancedStandardItemModel.__init__(self,parent) self.proxy = cm.get_proxy_handle() self.users = {} self.columninfo = { 'uidnumber': {'text': self.tr('User ID'), 'columnindex': 3}, 'uid': {'text': self.tr('Login'), 'columnindex': 1}, 'cn': {'text': self.tr('User name'), 'columnindex': 0}, 'usertype': {'text': self.tr('User type'), 'columnindex': 2} } self.initialSetup() self.tr("teacher","singular") self.tr("student","singular") self.tr("parent","singular") self.tr("other","singular") default_icon = paths.path_to('art/student.svg') self.icons = {} for usertype in userdef.list_usertypes_by_text(): icon = default_icon if os.path.exists(paths.path_to('art/%s.svg') % usertype): icon = paths.path_to('art/%s.svg') % usertype self.icons[userdef.usertype_as_id(usertype)] = qt4tools.svg2pixmap(icon,24,24)
def accept(self): progress = QtGui.QProgressDialog(self.tr("Applying membership changes..."),self.tr("Cancel"),0,100) progress.setWindowModality(QtCore.Qt.WindowModal) progress.show() groups = self.groupmodel.groupNames() add_users = self.add_usermodel.userNames() del_users = self.remove_usermodel.userNames() touched_groups = {} touched_users = {} proxy = cm.get_proxy_handle() steps = len(del_users)*len(groups) + len(add_users)*len(groups) step_factor = 100.0/steps step = 0 if accesstools.check_permission('membership.create',False): for uid in add_users: for grp in groups: proxy.groupadd(uid,grp) touched_users[uid] = 1 touched_groups[grp] = 1 progress.setValue(int(step*step_factor)) step+=1 if accesstools.check_permission('membership.remove',False): for uid in del_users: for grp in groups: proxy.groupdel(uid,grp) touched_users[uid] = 1 touched_groups[grp] = 1 progress.setValue(int(step*step_factor)) step+=1 for uid in touched_users.keys(): mainwin.get_mainwindow().emitUserMembershipsChanged(uid) for grp in touched_groups.keys(): mainwin.get_mainwindow().emitGroupMembershipsChanged(grp) progress.setValue(100) QtGui.QDialog.accept(self)
def __init__(self,parent): QtGui.QWidget.__init__(self,parent) self.proxy = cm.get_proxy_handle() self.setupUi(self) self.setupModel() self.setupUserTypeCombo() self.setupUserView() self.setupGroupFilterCombo() self.updateUserView() self.trv_userlist.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.trv_userlist,QtCore.SIGNAL("customContextMenuRequested(const QPoint&)"),self.userlistContextMenu) self.connect(self.trv_userlist,QtCore.SIGNAL("itemDoubleClicked(QTreeWidgetItem *,int)"),self.doubleClickEdit) self.connect(self.sbx_firstschoolyear_min,QtCore.SIGNAL("valueChanged(int)"),self.updateUserView) self.connect(self.sbx_firstschoolyear_max,QtCore.SIGNAL("valueChanged(int)"),self.updateUserView) # Recieve notice on altered, deleted or changed users self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL("userChanged"),self.updateUserView) self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL("userDeleted"),self.updateUserView) self.connect(mainwin.get_mainwindow(),QtCore.SIGNAL("userCreated"),self.updateUserView)