Merge branch 'hotfix/0.2.18'
This commit is contained in:
commit
ab5d6b51d5
2 changed files with 58 additions and 0 deletions
|
|
@ -71,6 +71,7 @@
|
|||
</span>
|
||||
<div class="nav-collapse collapse">
|
||||
<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 %}
|
||||
<li><a href="/account/logout/">Logout</a></li>
|
||||
{% else %}
|
||||
|
|
|
|||
57
pop_members.py
Normal file
57
pop_members.py
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue