Пример #1
0
    def setup_users(self):
        user_dicts = self.get_user_dicts()
        decode = self._decode
        created_count, existing_count, skipped = 0, 0, []
        username_pattern = re.compile("^[a-z]{2,5}[0-9]{3,3}$")
        for ud in user_dicts:
            uname = decode(ud['login']).lower()
            if username_pattern.match(uname) is None:
                skipped.append(uname)
                continue

            phone = self._get_phone(ud)
            first_name = decode(ud['fnamn'])
            last_name = decode(ud['enamn'])

            # Do not update the phone or name of an already imported users, we
            # risk overwriting updated credentials.
            user_exists = User.objects.filter(username__exact=uname).count() != 0
            if user_exists:
                phone = None
                first_name = None
                last_name = None

            eaddr_custom = None
            if ud['epost']:
                eaddr_custom = decode(ud['epost'])

            u, created = get_or_create_user(
                username=uname, 
                first_name=first_name,
                last_name=last_name,
                email=eaddr_custom,
                phone=phone,
                show_email=ud['ejepost'] == 0,
                show_profile=ud['dold'] == 0,
            )
            p = u.get_profile()

            if created:
                log.info('created: %r %r' % (u, p))
                created_count += 1
            else:
                log.info('existing: %r %r' % (u, p))
                existing_count += 1

        log.info('%d/%d/%d user(s) created/existing/skipped' % (
            created_count, existing_count, len(skipped)))
        if len(skipped):
            log.warning('skipped: %s' % ", ".join(skipped))
Пример #2
0
            pass
        else:
            log.error(e)
        return None

    if create:
        # FIXME: DRY.
        enc = 'utf-8'
        if first_name is not None:
            first_name = first_name.decode(enc)
        if last_name is not None:
            last_name = last_name.decode(enc)

        user, created = get_or_create_user(
            username=username,
            first_name=first_name,
            last_name=last_name,
        )

        if silent:
            pass
        else:
            if created:
                log.info('created %r' % user)
            else:
                log.info('fetched %r from directory' % user)
        return user
    return True


class LDAPBackend(object):