Ejemplo n.º 1
0
	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)
Ejemplo n.º 2
0
	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)
Ejemplo n.º 3
0
    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'])
Ejemplo n.º 5
0
    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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
    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()
Ejemplo n.º 12
0
	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 = {}
Ejemplo n.º 15
0
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
Ejemplo n.º 16
0
	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)
Ejemplo n.º 20
0
	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)
Ejemplo n.º 21
0
    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())
Ejemplo n.º 22
0
	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")
Ejemplo n.º 23
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()
Ejemplo n.º 24
0
	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)
Ejemplo n.º 25
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()
	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()
Ejemplo n.º 28
0
	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)
Ejemplo n.º 30
0
	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)