{"id":13815257,"url":"https://github.com/UMIACS/ldapper","last_synced_at":"2025-05-15T07:32:24.279Z","repository":{"id":62575390,"uuid":"185909004","full_name":"UMIACS/ldapper","owner":"UMIACS","description":"ldapper — a hassle-free Python LDAP ORM for getting real work done","archived":false,"fork":false,"pushed_at":"2020-06-09T00:02:13.000Z","size":159,"stargazers_count":45,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-28T09:03:22.274Z","etag":null,"topics":["ldap","ldap-client","ldap-library","ldap-manager","python","python3"],"latest_commit_sha":null,"homepage":"https://ldapper.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UMIACS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-10T03:00:19.000Z","updated_at":"2024-11-28T16:34:20.000Z","dependencies_parsed_at":"2022-11-03T20:43:52.236Z","dependency_job_id":null,"html_url":"https://github.com/UMIACS/ldapper","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UMIACS%2Fldapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UMIACS%2Fldapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UMIACS%2Fldapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UMIACS%2Fldapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UMIACS","download_url":"https://codeload.github.com/UMIACS/ldapper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254296033,"owners_count":22047188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ldap","ldap-client","ldap-library","ldap-manager","python","python3"],"created_at":"2024-08-04T04:03:13.309Z","updated_at":"2025-05-15T07:32:19.269Z","avatar_url":"https://github.com/UMIACS.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"ldapper\n========\n\n[![Build Status](https://travis-ci.org/UMIACS/ldapper.svg?branch=master)](https://travis-ci.org/UMIACS/ldapper)\n[![Documentation Status](https://readthedocs.org/projects/ldapper/badge/?version=latest)](https://ldapper.readthedocs.io/en/latest/?badge=latest)\n\nldapper is a hassle-free Python LDAP ORM for getting real work done.\n\nIt extends the robust capabilities of python-ldap and augments it with higher-level interfaces to define your schema.  Listing and fetching all your LDAP objects is easy and straightforward.  Modifications and validation can be made with assurance using ldapper.\n\n\nRequirements\n------------\nldapper requires:\n\n* Python 3.6+\n* inflection\n\nVersion 0.9.0 was the last to support Python 2.\n\nUsage\n-----\n\n```python\nfrom ldapper.connection import BaseConnection\nfrom ldapper.ldapnode import LDAPNode\nfrom ldapper import fields\n\n\n# define a connection\nclass Connection(BaseConnection):\n    BASE_DN = 'dc=example,dc=com'\n    URI = 'ldaps://ldap.example.com'\n\n\n# define a common LDAPNode that holds the connection class you defined\nclass BaseModel(LDAPNode):\n    connection = Connection\n\n\n# define a class to represent people\nclass Person(BaseModel):\n    uid = fields.StringField('uid', primary=True)\n    uidnumber = fields.IntegerField('uidNumber')\n    firstname = fields.StringField('givenName')\n    lastname = fields.StringField('sn')\n    email_addresses = fields.ListField('mailLocalAddress')\n    photo = fields.BinaryField('jpegPhoto', optional=True)\n\n    class Meta:\n        objectclasses = ['top', 'inetOrgPerson', 'inetLocalMailRecipient']\n        dn_format = 'uid=%(uid)s,ou=people'\n        primary_dnprefix = 'ou=people'\n        secondary_dnprefix = 'ou=people'\n        identifying_attrs = ['uid']\n        searchable_fields = [\n'uid', 'uidNumber', 'givenName', 'sn', 'mailLocalAddress']\n\n\n# use the Person class\nperson = Person.fetch('liam')\nperson.displayname = 'Chuck Yeager'\nperson.save()\nperson.delete()\n\n\nfrom ldapper.query import Q\nPerson.filter(Q(firstname='Foo') | Q(lastname='Bar'))\n```\n\n\nDocumentation\n-------------\nAvailable at https://ldapper.readthedocs.io/\n\n\nTesting\n-------\nPlease see the README.md file in the test directory for information on running unit tests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUMIACS%2Fldapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FUMIACS%2Fldapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUMIACS%2Fldapper/lists"}