diff --git a/account/templates/base.html b/account/templates/base.html
index 158baa7..6b7eac3 100644
--- a/account/templates/base.html
+++ b/account/templates/base.html
@@ -71,6 +71,7 @@
+ - Bugs/Issues
{% if request.user.is_authenticated %}
- Logout
{% else %}
diff --git a/pop_members.py b/pop_members.py
new file mode 100644
index 0000000..e50fcb5
--- /dev/null
+++ b/pop_members.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python2.7
+# -*- coding: utf8 -*-
+"""Synchronize all members from LDAP and populate the database
+
+This script fetches all active members from the LDAP database and populates the
+Django database with all discovered members, and groups.
+
+https://github.com/c-base/cbmi/issues/22
+"""
+
+import ldap
+from django_auth_ldap.backend import LDAPBackend
+from cbmi import settings
+
+# some config vars
+ldap_server = settings.AUTH_LDAP_SERVER_URI
+ldap_baseDN = 'ou=crew,dc=c-base,dc=org'
+ldap_search_scope = ldap.SCOPE_SUBTREE
+ldap_retrieve_attrs = None
+ldap_search_filter = 'memberOf=cn=crew,ou=groups,dc=c-base,dc=org'
+
+def connect():
+ """connect to ldap server and return connection object"""
+ l = ldap.initialize(ldap_server)
+ l.protocol_version = ldap.VERSION3
+ return l
+
+def query_members(l):
+ """query for all members and return the raw result data-structure"""
+ ldap_result_id = l.search(ldap_baseDN, ldap_search_scope, ldap_search_filter, ldap_retrieve_attrs)
+ result_set = []
+ while 1:
+ result_type, result_data = l.result(ldap_result_id, 0)
+ if result_data == []:
+ break
+ else:
+ result_set.append(result_data)
+ return result_set
+
+def all_members():
+ """fetch result data-structure and return striped uid's"""
+ connection = connect()
+ results = query_members(connection)
+ members = set()
+ for r in results:
+ uid = r[0][1]['uid'][0]
+ members.add(uid)
+ return members
+
+def populate_members():
+ """fetch all members, sort them and populate the Django database"""
+ for m in sorted(all_members()):
+ member = LDAPBackend().populate_user(m)
+ if member:
+ print 'Populated: %s' % member
+ else:
+ print 'Not found: %s' % m