コード例 #1
0
ファイル: members.py プロジェクト: sim0nx/mematool
        def new_f(self, member_id, **kwargs):
            # @TODO request.params may contain multiple values per key... test & fix
            formok = True
            errors = []

            try:
                ParamChecker.checkMode('mode', values=('add', 'edit'))
            except InvalidParameterFormat as ipf:
                formok = False
                errors.append(ipf.message)

            m = Member()

            for v in m.str_vars:
                setattr(m, v, self.request.params.get(v, ''))

            m.uid = member_id

            try:
                m.check()
            except InvalidParameterFormat as ipf:
                formok = False
                errors += ipf.message

            if self.request.params[
                    'mode'] == 'add' or not self.request.params.get(
                        'userPassword', '') == '':
                try:
                    ParamChecker.checkPassword('userPassword', 'userPassword2')
                except InvalidParameterFormat as ipf:
                    formok = False
                    errors.append(ipf.message)

            if not formok:
                self.session['errors'] = errors
                self.session['reqparams'] = {}

                # @TODO request.params may contain multiple values per key... test & fix
                for k in self.request.params.iterkeys():
                    if k == 'fullMember' or k == 'lockedMember':
                        if self.request.params[k] == 'on':
                            self.session['reqparams'][k] = True
                        else:
                            self.session['reqparams'][k] = False
                    else:
                        self.session['reqparams'][k] = self.request.params[k]

                self.session.save()

                if self.request.params['mode'] == 'add':
                    raise HTTPRedirect('/members/addMember')
                else:
                    raise HTTPRedirect(
                        '/members/editMember/?member_id={0}'.format(member_id))

            return f(self)
コード例 #2
0
ファイル: members.py プロジェクト: sim0nx/mematool
    def doEditMember(self):
        try:
            if self.request.params['mode'] == 'edit':
                member = self.mf.getUser(self.request.params['member_id'])
            else:
                member = Member()
                member.uid = self.request.params['member_id']

            for v in member.str_vars:
                if v in self.request.params:
                    setattr(member, v,
                            self.request.params.get(v).lstrip(' ').rstrip(' '))

            for v in member.bool_vars:
                if v in self.request.params:
                    setattr(member, v, True)

            if not self.request.params.get(
                    'userPassword', ''
            ) == '' and self.request.params[
                    'userPassword'] == self.request.params['userPassword2']:
                member.setPassword(self.request.params['userPassword'])
            ''' fullMember / lockedMember'''
            if 'fullMember' in self.request.params and not Config.get(
                    'mematool', 'group_fullmember') in member.groups:
                member.groups.append(Config.get('mematool',
                                                'group_fullmember'))
            elif not 'fullMember' in self.request.params and Config.get(
                    'mematool', 'group_fullmember') in member.groups:
                member.groups.remove(Config.get('mematool',
                                                'group_fullmember'))

            if 'lockedMember' in self.request.params and not Config.get(
                    'mematool', 'group_lockedmember') in member.groups:
                member.groups.append(
                    Config.get('mematool', 'group_lockedmember'))
            elif not 'lockedMember' in self.request.params and Config.get(
                    'mematool', 'group_lockedmember') in member.groups:
                member.groups.remove(
                    Config.get('mematool', 'group_lockedmember'))

            self.mf.saveMember(member)

            self.session['flash'] = _('Member details successfully edited')
            self.session.save()

            raise HTTPRedirect('/members/editMember/?member_id={0}'.format(
                self.request.params['member_id']))

        except LookupError:
            print 'No such user !'

        # @TODO make much more noise !
        raise HTTPRedirect('/members/showAllMembers')
コード例 #3
0
    def getUser(self, uid, clear_credentials=False):
        '''
    Return a Member object populated with it's attributes loaded from LDAP

    :param uid: LDAP UID
    :type uid: string
    :returns: Member
    '''
        filter_ = '(uid=' + uid + ')'
        attrs = ['*']
        basedn = 'uid=' + str(uid) + ',' + str(
            Config.get('ldap', 'basedn_users'))

        result = self.ldapcon.search_s(basedn, ldap.SCOPE_SUBTREE, filter_,
                                       attrs)

        if not result:
            raise LookupError('No such user !')

        m = Member()

        for dn, attr in result:
            for k, v in attr.iteritems():
                if 'objectClass' in k:
                    # @TODO ignore for now
                    continue

                # @TODO handle multiple results
                v = v[0]

                # @todo:  why again do we still need this ?
                if k == 'sambaSID' and v == '':
                    v = None

                m.set_property(k, v)

        if clear_credentials:
            m.sambaNTPassword = '******'
            m.userPassword = '******'

        m.groups = self.getUserGroupList(uid)

        return m