def _build_user_dict(self, result_dict): """ Creates a dictionary to append to the user results list, with arrangement based on configuration. """ user = {} # Add 'firstname' and 'lastname' (if present) if self.config.get("dir_fname_source") not in (None, ""): user["firstname"] = result_dict.get(self.config["dir_fname_source"], [" "])[0] if self.config.get("dir_lname_source") not in (None, ""): user["lastname"] = result_dict.get(self.config["dir_lname_source"], [" "])[0] # Add 'email' if self.config.get("dir_email_source") not in (None, ""): user["email"] = result_dict[self.config["dir_email_source"]][0] user["username"] = result_dict[self.config["dir_username_source"]][0] else: user["email"] = result_dict[self.config["dir_username_source"]][0] # Add 'enabled' enabled_attrs_dict = { k: result_dict[k][0] if k in result_dict else "" for k in vendor.enabled_attrs(self.config) } user["enabled"] = vendor.check_enabled(self.config, enabled_attrs_dict) # Add 'uniqueid' guid_source = self.config.get("dir_guid_source", None) result_guid = result_dict.get(guid_source, None) if guid_source and result_guid: user["uniqueid"] = vendor.fix_guid(self.config, result_guid[0]) return user
def _create_attrlist(self): """ Creates an LDAP search attribute list based on our configuration. """ attrlist = [self.config["dir_username_source"].encode("utf-8"), self.config["dir_guid_source"].encode("utf-8")] def append_if_present(attr): attr_source = self.config.get(attr) if attr_source: attrlist.append(attr_source.encode("utf-8")) append_if_present("dir_fname_source") append_if_present("dir_lname_source") append_if_present("dir_email_source") attrlist.extend(vendor.enabled_attrs(self.config)) return attrlist