ANN: ldiftemplate 0.1.0 released
NAME: ldiftemplate - a small module for quick "boss can add ldap objects" scripts. DESCRIPTION: When you're really happy with your ldap tree the moment comes where a dumb person (boss) asks you how he can hang new objects into this fancy tree by himself... Ugly... :-) This class gives me the ability to code simple scripts my boss can use to add some objects. It uses LDIF templates derived from real objects -- with simple placeholders in it. The class gives you a list of placeholders and descriptions so it is easy to print them before requesting the values (boss can see what he needs). After doing setPlaceholder( key, val ) for every placeholder you simply call getTupleList() to get a list with the two args you need for ldap.add_s(). It is fairly simple. MISSING FEATURES: - no support for base64 data ("name:: VALUE" in LDIF) - no detection for cross placeholder replacing [2 placeholders TTT and BUG: call setPlaceholder( 'TTT', 'HUMBUG') + setPlaceholder('BUG','something'): --> 'TTT: HUMsomething'] HOMEPAGE: http://www.home.unix-ag-org/tjabo/ldap/ (german) The in-source docs are english. And there's a method ".sample()", printing a sample LDIF template. Yes, the class's name is "new". I did not want to type "ldiftemplate" over and over again... HINT: Use placeholders with three or more BIG LETTERS! EXAMPLES/DEMO: I'll show how to add simple "customer" objects. They need cn and custID: TEMPLATE (newCustomer.template): #TITLE Quick new customer. #DEF XXX Name of customer #DEF YYY Customer id dn: cn=XXX,ou=customers,o=company objectClass: customer objectClass: top cn: XXX custID: YYY SCRIPT: #!/usr/bin/env python2.2 import ldiftemplate t = ldiftemplate.new( 'newCustomer.template' ) ph = t.getPlaceholders() # [ ('XXX', 'Name of customer'), ... ] print t.title print " I need: \n - " + "\n - ".join( map( lambda x: x[1], ph ) ) for p in ph: e = raw_input( "%s> " % ( p[1] ) ) t.setPlaceholder( p[0], e ) print t.getTupleList() OUTPUT: Quick new customer. I need: - Name of customer - Customer id Name of customer> FlyLime Ltd Customer id> 1034 ('cn=FlyLime Ltd,ou=customers,o=company', [('objectClass', ['customer', 'top']), ('custID', ['1034']), ('cn', ['FlyLime Ltd'])]) The next step would be to do ldap.initialize(...), bind(...), and l.add_s( L[0], L[1] ). INSTALLATION: Copy ldiftemplate.py to a good place. :-) "/usr/lib/python2.2/site-packages/" or "<the directory where your program is>" -- Tjabo Kloppenburg GnuPG Key is on http://www.home.unix-ag.org/tjabo/kontakt.html
participants (1)
-
Tjabo Kloppenburg