Merge branch 'hotfix/0.2.18'

This commit is contained in:
baccenfutter 2013-11-25 22:46:46 +01:00
commit ab5d6b51d5
2 changed files with 58 additions and 0 deletions

View file

@ -71,6 +71,7 @@
</span> </span>
<div class="nav-collapse collapse"> <div class="nav-collapse collapse">
<ul class="nav nav-collapse collapse pull-right"> <ul class="nav nav-collapse collapse pull-right">
<li><a href="https://github.com/c-base/cbmi/issues">Bugs/Issues</a></li>
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<li><a href="/account/logout/">Logout</a></li> <li><a href="/account/logout/">Logout</a></li>
{% else %} {% else %}

57
pop_members.py Normal file
View file

@ -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