aboutsummaryrefslogtreecommitdiff
path: root/member_list.py
diff options
context:
space:
mode:
Diffstat (limited to 'member_list.py')
-rwxr-xr-xmember_list.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/member_list.py b/member_list.py
new file mode 100755
index 0000000..6e8cb01
--- /dev/null
+++ b/member_list.py
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+
+import linaro_ldap
+import yaml
+from jinja2 import Template
+import os
+
+OUTFILE = "member-identities.yaml"
+
+if os.path.isfile(OUTFILE):
+ os.unlink(OUTFILE)
+
+tmpl = Template(u'''\
+- profile:
+ name: {{ username }}
+ enrollments:
+ - organization: {{ org }}
+ email:
+ - {{ email }}
+
+''')
+
+def getKey(item):
+ return item[0]
+
+def getPersonKey(item):
+ try:
+ return item[1]['gecos'][0].lstrip()
+ except KeyError:
+ return "None"
+
+def get_member_ous(ldap):
+ result = ldap.do_complex_query( search_filter='(organizationalStatus=*)', attrlist=['ou','description'])
+
+ member_list = []
+ for x in result:
+ member_list.append( (x[1]['description'][0], x[1]['ou'][0]) )
+
+ member_list = sorted(member_list, key=getKey)
+ return member_list
+
+
+member_ou_list = get_member_ous(linaro_ldap)
+
+for member in member_ou_list:
+ people = linaro_ldap.do_complex_query( \
+ base = 'ou=%s,ou=accounts,dc=linaro,dc=org' % member[1], \
+ search_filter='(objectClass=inetOrgPerson)', \
+ attrlist=['uid','gecos','mail'])
+
+ s_people = sorted(people, key=getPersonKey)
+
+ for person in s_people:
+ try:
+ uid = person[1]['gecos'][0]
+ email = person[1]['mail'][0]
+ foo = tmpl.render(
+ username=uid,
+ org=member[0],
+ email=email
+ )
+ with open( OUTFILE, 'a') as outfile:
+ outfile.write(foo)
+ except KeyError:
+ pass