fasjson.lib.ldap package¶
Submodules¶
fasjson.lib.ldap.client module¶
- class fasjson.lib.ldap.client.LDAP(uri, basedn, login='', timeout=<Mock name='mock.NO_LIMIT' id='140650514456720'>, trace_level=0)[source]¶
Bases:
object
- search(model, sub_dn=None, base_dn=None, filters=None, attrs=None, scope=<Mock name='mock.SCOPE_SUBTREE' id='140650590797456'>, page_size=0, page_number=1)[source]¶
Perform an LDAP query with pagination support.
LDAP’s pagination system is not web-compatible, because the pagination cursor is connection-specific and webservers typically have multiple processes, and therefore multiple LDAP connections. As a result, to implement pagination we proceed as such:
query the primary keys for the whole result set (this is rather fast because only the primary keys are queried)
slice this list into pages
make a second query including only the primary keys that are in the requested page, but requesting all attributes
build a
LDAPResult
object that takes into account the total number of entries to provide pagination information
- Parameters:
model (Model) – The object model that is being queried
sub_dn (str, optional) – The DN of the subtree to query (no
base_dn
suffix). Defaults to thesub_dn
provided by the model.filters (str) – The LDAP filters to use (in LDAP syntax)
attrs (list, optional) – The list of attributes to request. Defaults to the model’s attributes list.
scope (int, optional) – The LDAP scope to use. Defaults to ldap.SCOPE_SUBTREE.
page_size (int, optional) – The number of items per page. If this is zero, disable pagination and request all items. Defaults to 0.
page_number (int, optional) – The requested page number. Defaults to 1.
- Returns:
The query result, with pagination information if appropriate.
- Return type:
fasjson.lib.ldap.converters module¶
- class fasjson.lib.ldap.converters.BoolConverter(ldap_name, multivalued=False)[source]¶
Bases:
Converter
fasjson.lib.ldap.models module¶
- class fasjson.lib.ldap.models.AgreementModel[source]¶
Bases:
Model
- fields = {'name': <fasjson.lib.ldap.converters.Converter object>}¶
- filters = '(&(objectClass=fasAgreement)(ipaEnabledFlag=TRUE))'¶
- primary_key = 'cn'¶
- sub_dn = 'cn=fasagreements'¶
- class fasjson.lib.ldap.models.GroupModel[source]¶
Bases:
Model
- fields = {'description': <fasjson.lib.ldap.converters.Converter object>, 'discussion_url': <fasjson.lib.ldap.converters.Converter object>, 'groupname': <fasjson.lib.ldap.converters.Converter object>, 'irc': <fasjson.lib.ldap.converters.Converter object>, 'mailing_list': <fasjson.lib.ldap.converters.Converter object>, 'url': <fasjson.lib.ldap.converters.Converter object>}¶
- filters = '(objectClass=fasGroup)'¶
- primary_key = 'cn'¶
- sub_dn = 'cn=groups,cn=accounts'¶
- class fasjson.lib.ldap.models.Model[source]¶
Bases:
object
- always_exact_match = []¶
- fields = {}¶
- filters = '(objectClass=*)'¶
- primary_key = None¶
- sub_dn = None¶
- class fasjson.lib.ldap.models.SponsorModel[source]¶
Bases:
Model
- fields = {'sponsors': <fasjson.lib.ldap.converters.Converter object>}¶
- filters = '(&(objectClass=fasUser)(!(nsAccountLock=TRUE)))'¶
- primary_key = 'memberManager'¶
- sub_dn = 'cn=users,cn=accounts'¶
- class fasjson.lib.ldap.models.UserModel[source]¶
Bases:
Model
- always_exact_match = ['email', 'group']¶
- fields = {'certificates': <fasjson.lib.ldap.converters.BinaryConverter object>, 'creation': <fasjson.lib.ldap.converters.GeneralTimeConverter object>, 'emails': <fasjson.lib.ldap.converters.Converter object>, 'github_username': <fasjson.lib.ldap.converters.Converter object>, 'gitlab_username': <fasjson.lib.ldap.converters.Converter object>, 'givenname': <fasjson.lib.ldap.converters.Converter object>, 'gpgkeyids': <fasjson.lib.ldap.converters.Converter object>, 'groups': <fasjson.lib.ldap.converters.Converter object>, 'human_name': <fasjson.lib.ldap.converters.Converter object>, 'ircnicks': <fasjson.lib.ldap.converters.Converter object>, 'is_private': <fasjson.lib.ldap.converters.BoolConverter object>, 'locale': <fasjson.lib.ldap.converters.Converter object>, 'locked': <fasjson.lib.ldap.converters.BoolConverter object>, 'pronouns': <fasjson.lib.ldap.converters.Converter object>, 'rhbzemail': <fasjson.lib.ldap.converters.Converter object>, 'rssurl': <fasjson.lib.ldap.converters.Converter object>, 'sshpubkeys': <fasjson.lib.ldap.converters.Converter object>, 'surname': <fasjson.lib.ldap.converters.Converter object>, 'timezone': <fasjson.lib.ldap.converters.Converter object>, 'username': <fasjson.lib.ldap.converters.Converter object>, 'website': <fasjson.lib.ldap.converters.Converter object>}¶
- filters = '(&(objectClass=fasUser)(!(nsAccountLock=TRUE)))'¶
- primary_key = 'uid'¶
- private_fields = ['human_name', 'surname', 'givenname', 'ircnicks', 'locale', 'timezone', 'gpgkeyids', 'github_username', 'gitlab_username', 'website', 'rssurl', 'pronouns']¶
- sub_dn = 'cn=users,cn=accounts'¶