]> git.ipfire.org Git - ipfire.org.git/blobdiff - src/backend/accounts.py
accounts: Remove search cache
[ipfire.org.git] / src / backend / accounts.py
index 65afdef3b859ceed94eca574fab28c0541c53d22..e2352f5512d42de9a808632c91819181d6aa47ce 100644 (file)
@@ -49,13 +49,13 @@ class Accounts(Object):
 
                return conn
 
-       def _query(self, query, attrlist=None, limit=0, search_base=None, scope=None):
+       def _query(self, query, attrlist=None, limit=0, search_base=None):
                logging.debug("Performing LDAP query: %s" % query)
 
                t = time.time()
 
                results = self.ldap.search_ext_s(search_base or self.search_base,
-                       scope or ldap.SCOPE_SUBTREE, query, attrlist=attrlist, sizelimit=limit)
+                       ldap.SCOPE_SUBTREE, query, attrlist=attrlist, sizelimit=limit)
 
                # Log time it took to perform the query
                logging.debug("Query took %.2fms" % ((time.time() - t) * 1000.0))
@@ -63,29 +63,21 @@ class Accounts(Object):
                return results
 
        def _search(self, query, attrlist=None, limit=0):
-               dns = self._search_dns(query, limit=limit)
+               accounts = []
+               for dn, attrs in self._query(query, attrlist=["dn"], limit=limit):
+                       account = self.get_by_dn(dn)
+                       accounts.append(account)
 
-               accounts = self._get_accounts_from_dns(dns)
+               return accounts
 
-               return list(accounts)
-
-       def _search_dns(self, query, limit=0):
-               # Query cache
-               dns = self.memcache.get("accounts:search:%s" % query)
-               if dns is None:
-                       # Return DNs only for this search query
-                       dns = []
-                       for dn, attrs in self._query(query, attrlist=["dn"], limit=limit):
-                               dns.append(dn)
-
-                       # Cache for 10 min
-                       self.memcache.set("accounts:search:%s" % query, dns, 600)
-
-               return dns
+       def _get_attrs(self, dn):
+               """
+                       Fetches all attributes for the given distinguished name
+               """
+               results = self._query("(objectClass=*)", search_base=dn, limit=1)
 
-       def _get_accounts_from_dns(self, dns):
-               for dn in dns:
-                       yield self.get_by_dn(dn)
+               for dn, attrs in results:
+                       return attrs
 
        def get_by_dn(self, dn):
                attrs = self.memcache.get("accounts:%s:attrs" % dn)
@@ -98,15 +90,6 @@ class Accounts(Object):
 
                return Account(self.backend, dn, attrs)
 
-       def _get_attrs(self, dn):
-               """
-                       Fetches all attributes for the given distinguished name
-               """
-               results = self._query("(objectClass=*)", search_base=dn, limit=1)
-
-               for dn, attrs in results:
-                       return attrs
-
        def search(self, query):
                # Search for exact matches
                accounts = self._search(