def setup(self): # login restriction rx = QRegExp('\\w+') rx_validator = QRegExpValidator(rx,self) self.ed_groupname.setValidator(rx_validator) self.connect(self.ed_groupname,SIGNAL("textChanged(const QString&)"),self.check_group) self.typedict={self.tr('Primary').latin1():groupdef.grouptype_as_id('primary'),\ self.tr('System').latin1():groupdef.grouptype_as_id('system'),\ self.tr('Service').latin1():groupdef.grouptype_as_id('service')} order = [self.tr('Service').latin1(),\ self.tr('Primary').latin1(),self.tr('System').latin1()] for grouptype in order: self.cmb_grouptype.insertItem(grouptype)
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 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 updateGroupAddExcludeFilter(self): # Setup excludefilter self.add_group_wdg.groupmodel.exclude_gid_numbers = [] for gid_number in self.groupmodel.groups.keys(): self.add_group_wdg.groupmodel.exclude_gid_numbers += [gid_number] self.add_group_wdg.groupmodel.exclude_grouptype_ids=[groupdef.grouptype_as_id('primary')] self.add_group_wdg.updateGroupView()
def __init__(self,conn,parent = None,name = None,fl = 0): GroupManagerWdgBase.__init__(self,parent,name,fl) self.m_lv_grouplist.addColumn(self.tr("Name")) self.m_lv_grouplist.addColumn(self.tr("Type")) self.conn = conn # For passing on to create/remove groups self.soapproxy = conn.get_proxy_handle() self.grouplist = [] self.update_list() self.contextmenu_enabled = True self.typedict={self.tr('All').latin1():None, self.tr('Primary').latin1():groupdef.grouptype_as_id('primary'),\ self.tr('System').latin1():groupdef.grouptype_as_id('system'),\ self.tr('Service').latin1():groupdef.grouptype_as_id('service')} order = [self.tr('All').latin1(),self.tr('Service').latin1(),\ self.tr('Primary').latin1(),self.tr('System').latin1()] for grouptype in order: self.m_cb_grouptype_filter.insertItem(grouptype)
def hook_dropOnGroupView(self,obj,de): dragged_groups = pickle.loads(de.mimeData().data('application/x-skolesysgroups-pyobj')) for grp in dragged_groups: if grp['grouptype_id']==groupdef.grouptype_as_id('primary'): # Hold primary groups clear from secondary memberships continue self.groupmodel._addGroup(grp['gid'],grp['groupname'],grp['displayed_name'],grp['grouptype_id']) self.change_info['groups_by_name'] = list(self.groupmodel.groupNames()) self.change_info['groups_by_name'].sort() self.btn_apply.setEnabled(self.isDirty()) self.trv_groups.resizeColumnsToContent()
def setupModels(self): self.usermodel = umod.UserModel(self.trv_users) user_modelhelper = pmh.PluggableModelHelper(self.usermodel) user_modelhelper.setView(self.trv_users) for colidx in xrange(self.usermodel.columnCount()): user_modelhelper.setColumnReadOnly(colidx) for user in self.users: self.usermodel._addUser(user['uidnumber'],user['uid'],user['cn'],user['usertype_id']) self.trv_users.resizeColumnsToContent() self.avail_groupmodel = gmod.GroupModel(self.trv_available) avail_modelhelper = pmh.PluggableModelHelper(self.avail_groupmodel) avail_modelhelper.setView(self.trv_available) # Hide some columns self.trv_available.setColumnHidden(self.avail_groupmodel.columninfo['gid']['columnindex'],True) self.trv_available.setColumnHidden(self.avail_groupmodel.columninfo['groupname']['columnindex'],True) # Add groups for colidx in xrange(self.avail_groupmodel.columnCount()): avail_modelhelper.setColumnReadOnly(colidx) self.avail_groupmodel.exclude_grouptype_ids = [groupdef.grouptype_as_id('primary')] self.avail_groupmodel.loadGroups() self.trv_available.connectEvent("dropEvent",self.hook_dropOnAvailView) self.trv_available.resizeColumnsToContent() self.avail_groupmodel.setAcceptedMimeTypes(['application/x-skolesysgroups-pyobj']) self.add_groupmodel = gmod.GroupModel(self.trv_add) add_modelhelper = pmh.PluggableModelHelper(self.add_groupmodel) add_modelhelper.setView(self.trv_add) # Hide some columns self.trv_add.setColumnHidden(self.add_groupmodel.columninfo['gid']['columnindex'],True) self.trv_add.setColumnHidden(self.add_groupmodel.columninfo['groupname']['columnindex'],True) # Add groups for colidx in xrange(self.add_groupmodel.columnCount()): add_modelhelper.setColumnReadOnly(colidx) self.trv_add.connectEvent("dropEvent",self.hook_dropOnAddView) self.add_groupmodel.setAcceptedMimeTypes(['application/x-skolesysgroups-pyobj']) self.remove_groupmodel = gmod.GroupModel(self.trv_remove) remove_modelhelper = pmh.PluggableModelHelper(self.remove_groupmodel) remove_modelhelper.setView(self.trv_remove) # Hide some columns self.trv_remove.setColumnHidden(self.remove_groupmodel.columninfo['gid']['columnindex'],True) self.trv_remove.setColumnHidden(self.remove_groupmodel.columninfo['groupname']['columnindex'],True) # Add groups for colidx in xrange(self.remove_groupmodel.columnCount()): remove_modelhelper.setColumnReadOnly(colidx) self.trv_remove.connectEvent("dropEvent",self.hook_dropOnRemoveView) self.remove_groupmodel.setAcceptedMimeTypes(['application/x-skolesysgroups-pyobj'])
def setupModels(self): self.groupmodel = gmod.GroupModel(self.trv_groups) group_modelhelper = pmh.PluggableModelHelper(self.groupmodel) group_modelhelper.setView(self.trv_groups) for colidx in xrange(self.groupmodel.columnCount()): group_modelhelper.setColumnReadOnly(colidx) for grp in self.groups: if grp['grouptype_id']==groupdef.grouptype_as_id('primary'): # Primary groups should remain primary groups continue self.groupmodel._addGroup(grp['gid'],grp['groupname'],grp['displayed_name'],grp['grouptype_id']) self.trv_groups.resizeColumnsToContent() self.avail_usermodel = umod.UserModel(self.trv_available) avail_modelhelper = pmh.PluggableModelHelper(self.avail_usermodel) avail_modelhelper.setView(self.trv_available) # Hide some columns self.trv_available.setColumnHidden(self.avail_usermodel.columninfo['uidnumber']['columnindex'],True) # Add groups for colidx in xrange(self.avail_usermodel.columnCount()): avail_modelhelper.setColumnReadOnly(colidx) self.avail_usermodel.loadUsers() self.trv_available.connectEvent("dropEvent",self.hook_dropOnAvailView) self.trv_available.resizeColumnsToContent() self.avail_usermodel.setAcceptedMimeTypes(['application/x-skolesysusers-pyobj']) self.add_usermodel = umod.UserModel(self.trv_add) add_modelhelper = pmh.PluggableModelHelper(self.add_usermodel) add_modelhelper.setView(self.trv_add) # Hide some columns self.trv_add.setColumnHidden(self.add_usermodel.columninfo['uidnumber']['columnindex'],True) # Add groups for colidx in xrange(self.add_usermodel.columnCount()): add_modelhelper.setColumnReadOnly(colidx) self.trv_add.connectEvent("dropEvent",self.hook_dropOnAddView) self.add_usermodel.setAcceptedMimeTypes(['application/x-skolesysusers-pyobj']) self.remove_usermodel = umod.UserModel(self.trv_remove) remove_modelhelper = pmh.PluggableModelHelper(self.remove_usermodel) remove_modelhelper.setView(self.trv_remove) # Hide some columns self.trv_remove.setColumnHidden(self.remove_usermodel.columninfo['uidnumber']['columnindex'],True) # Add groups for colidx in xrange(self.remove_usermodel.columnCount()): remove_modelhelper.setColumnReadOnly(colidx) self.trv_remove.connectEvent("dropEvent",self.hook_dropOnRemoveView) self.remove_usermodel.setAcceptedMimeTypes(['application/x-skolesysusers-pyobj'])
def setupNamePage(self): self.connect(self.led_groupname,QtCore.SIGNAL("textChanged(const QString&)"),self.checkName) self.connect(self.cmb_grouptype,QtCore.SIGNAL("activated(int)"),self.updateNamePage) self.tr("primary") self.tr("system") self.tr("service") grouptypeids = groupdef.list_grouptypes_by_id() #self.cmb_usertype.addItem(self.tr("Select user type..."),QtCore.QVariant(-1)) for i in grouptypeids: self.cmb_grouptype.addItem( self.tr(groupdef.grouptype_as_text(i)), QtCore.QVariant(i)) self.cmb_grouptype.setCurrentIndex(self.cmb_grouptype.findData(QtCore.QVariant(groupdef.grouptype_as_id('service'))))
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 viewGroupsAvailable(self): import groupviewwdg as gvw if not self.groupview: self.groupview = QtGui.QDialog(self) self.groupview.setWindowTitle(self.tr("Available groups")) self.vboxlayout = QtGui.QVBoxLayout(self.groupview) self.vboxlayout.setMargin(0) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.add_group_wdg = gvw.GroupViewWdg(self.groupview) self.vboxlayout.addWidget(self.add_group_wdg) # Remove Primary groups from the group filter idx = self.add_group_wdg.cmb_grouptype_filter.findData(QtCore.QVariant(groupdef.grouptype_as_id('primary'))) self.add_group_wdg.cmb_grouptype_filter.removeItem(idx) self.updateGroupAddExcludeFilter() self.groupview.show() wizard_rect = self.frameGeometry() wizard_rect2 = self.geometry() a=QtCore.QRect(wizard_rect.x()+wizard_rect.width(),wizard_rect.y(),300,wizard_rect2.height()) self.groupview.setGeometry(a)
print "Missing group name for creategroup operation" exit(0) groupname = args[1] print "Group name: %s" % groupname if not options.displayed_name: options.displayed_name = raw_input("Input the group's displayed name [%s]: " % groupname ) if not options.displayed_name or len(options.displayed_name.strip())==0: options.displayed_name = groupname print "Displayed name: %s" % options.displayed_name if not options.grouptype: options.grouptype = raw_input("Input the group's type (%s): " % (','.join(groupdef.list_grouptypes_by_text()))) options.grouptype = groupdef.grouptype_as_id(options.grouptype.strip()) if not options.grouptype: print "Invalid grouptype" exit(0) gm = GroupManager() try: groupadd_res = gm.creategroup(groupname,options.displayed_name,options.grouptype,options.description,options.gid) except Exception, e: print "An error occured while writing to the user LDAP database" print e exit(0) if groupadd_res==-1: print "The group %s already exists" % groupname exit(0) if groupadd_res==-2: