import datetime
import hashlib
import hmac
+import iso3166
import json
import ldap
import ldap.modlist
def init(self):
self.search_base = self.settings.get("ldap_search_base")
+ def __len__(self):
+ count = self.memcache.get("accounts:count")
+
+ if count is None:
+ count = self._count("(objectClass=person)")
+
+ self.memcache.set("accounts:count", count, 300)
+
+ return count
+
def __iter__(self):
# Only return developers (group with ID 1000)
accounts = self._search("(&(objectClass=posixAccount)(gidNumber=1000))")
return results
+ def _count(self, query):
+ res = self._query(query, attrlist=["dn"])
+
+ return len(res)
+
def _search(self, query, attrlist=None, limit=0):
accounts = []
for dn, attrs in self._query(query, attrlist=["dn"], limit=limit):
return h.hexdigest()
+ @property
+ def countries(self):
+ ret = {}
+
+ for country in iso3166.countries:
+ count = self._count("(&(objectClass=person)(st=%s))" % country.alpha2)
+
+ if count:
+ ret[country] = count
+
+ return ret
+
class Account(LDAPObject):
def __str__(self):