コード例 #1
0
	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)
コード例 #2
0
    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()
コード例 #3
0
	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'])
コード例 #4
0
	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()
コード例 #5
0
	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)
コード例 #6
0
	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()
コード例 #7
0
	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'])
コード例 #8
0
	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'])
コード例 #9
0
	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'))))
コード例 #10
0
	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()
コード例 #11
0
	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)
コード例 #12
0
			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: