Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/pynslcd/alias.py
diff options
context:
space:
mode:
Diffstat (limited to 'pynslcd/alias.py')
-rw-r--r--pynslcd/alias.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/pynslcd/alias.py b/pynslcd/alias.py
index cdae9da..25d55b3 100644
--- a/pynslcd/alias.py
+++ b/pynslcd/alias.py
@@ -18,6 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
+import cache
import common
import constants
@@ -33,6 +34,23 @@ class Search(common.Search):
required = ('cn', 'rfc822MailMember')
+class Cache(cache.Cache):
+
+ retrieve_sql = '''
+ SELECT `alias_cache`.`cn` AS `cn`,
+ `alias_1_cache`.`rfc822MailMember` AS `rfc822MailMember`
+ FROM `alias_cache`
+ LEFT JOIN `alias_1_cache`
+ ON `alias_1_cache`.`alias` = `alias_cache`.`cn`
+ '''
+
+ def retrieve(self, parameters):
+ query = cache.Query(self.retrieve_sql, parameters)
+ # return results, returning the members as a list
+ for row in cache.RowGrouper(query.execute(self.con), ('cn', ), ('rfc822MailMember', )):
+ yield row['cn'], row['rfc822MailMember']
+
+
class AliasRequest(common.Request):
def write(self, name, members):