Esempio n. 1
0
    def update():
        _ldap_dict = {}
        ldap = Ldap()
        _ldap_users = ldap.search().all()

        for dn, user in _ldap_users:
            _ldap_dict[user["uid"].lower()] = user

        users = User.query.all()
        user_dict = {}
        for user in users:
            user_dict[user.uid.lower()] = user

        # 删除离职的
        for uid in set(user_dict.keys()).difference(_ldap_dict.keys()):
            user_dict[uid].is_dimiss = True

        # 修改存在的
        for uid in set(user_dict.keys()).intersection(_ldap_dict.keys()):
            u, ldap = user_dict[uid], _ldap_dict[uid]
            u.is_dimiss = False
            for field in ldap.keys():
                if field == "x-csf-emp-onboardDate":
                    u.onboardDate = ldap[field]
                else:
                    setattr(u, field, ldap[field])

        # 添加新增的
        for uid in set(_ldap_dict.keys()).difference(user_dict.keys()):
            _user = _ldap_dict[uid]
            user = User(_user)
            user.create_time = datetime.now()
            user.last_time = datetime.now()
            user.onboardDate = datetime.strptime(
                _user["x-csf-emp-onboardDate"], "%Y%m%d")
            user.is_admin = False
            db.session.add(user)

        db.session.commit()
        return True
Esempio n. 2
0
    def update():
        _ldap_dict = {}
        ldap = Ldap()
        _ldap_users = ldap.search().all()

        for dn, user in _ldap_users:
            _ldap_dict[user["uid"].lower()] = user

        users = User.query.all()
        user_dict = {}
        for user in users:
            user_dict[user.uid.lower()] = user

        # 删除离职的
        for uid in set(user_dict.keys()).difference(_ldap_dict.keys()):
            user_dict[uid].is_dimiss = True

        # 修改存在的
        for uid in set(user_dict.keys()).intersection(_ldap_dict.keys()):
            u, ldap = user_dict[uid], _ldap_dict[uid]
            u.is_dimiss = False
            for field in ldap.keys():
                if field == "x-csf-emp-onboardDate":
                    u.onboardDate = ldap[field]
                else:
                    setattr(u, field, ldap[field])

        # 添加新增的
        for uid in set(_ldap_dict.keys()).difference(user_dict.keys()):
            _user = _ldap_dict[uid]
            user = User(_user)
            user.create_time = datetime.now()
            user.last_time = datetime.now()
            user.onboardDate = datetime.strptime(_user["x-csf-emp-onboardDate"], "%Y%m%d")
            user.is_admin = False
            db.session.add(user)

        db.session.commit()
        return True