Exemple #1
0
        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)
Exemple #2
0
    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')
Exemple #3
0
    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)
Exemple #4
0
  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')
Exemple #5
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
Exemple #6
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