To start out with, a brief bit of history… Many moons ago, back when GNOME was still a fairly new project, Jonathan Blanford (jrb) hacked together some python scripts for helping managing users in ldap. To ease the burden from the sysadmin team, a few good men wrote a user management tool for GNOME named mango. As you can see here, it has lots of the pretty. For the SysAdmin and Accounts team, mango is a workhorse, but as all good tools, it needs to be maintained.
Fast forward to today. Mango is still a champ and runs very well for what it was designed for. The issue is that it’s written in php, a language most of the GNOME sysadmin team don’t want to develop in. To fix this, Olav Vitters started rewriting it in python using django, the web framework full of pwnies and unicorns that I’ve got so much <3 for. When Olav started writing it, django and LDAP didn’t play so well together. This was a problem as the majority of mango’s data is stored in ldap so it needs first class ldap support. One of the largest french isps agrees that ldap + django are a good idea, so they wrote django-ldapdb. This is a subclass of django’s native orm, but for ldap directories.
As an excuse to work on more fun technology, I’ve picked up Olav’s great work and have started hacking on it. You can find the most up to date work here: https://github.com/SEJeff/mango/commits/django. This will also be my first really big non-work django project (other than snowy) that is being written from scratch. For managing users, one of my favorite features is that the search is “find as you type”. I’m sure the accounts team will appreciate this. It is still a huge WIP and I’ll need to clean up the commit history before pushing it to git.gnome.org. Either way, this is a good start.
Update: 4/17/2011 – Added a screenshot of the just prettified update user page.
TL; DNR – Pretty screenshots:
So some of the tech used so far is django, django-ldapdb, datatables, jquery-ui. This might not look like a whole lot, but it is a good start. Note that the users are being pulled from an actual ldap replica.