misc/scripts/cwuser_ldap2system.py
author Rémi Cardona <remi.cardona@logilab.fr>
Wed, 20 May 2015 16:17:28 +0200
changeset 10430 2b1ea3e8e080
parent 9460 a2a0bc984863
child 10589 7c23b7de2b8d
permissions -rw-r--r--
[devtools] qunit: use new async testing APIs http://qunitjs.com/cookbook/#asynchronous-callbacks QUnit keeps track of all the assert.async() objects created inside the test functions and expects all done() functions to be called. Failure to do so will result in the test being failed. Unlike .start and .stop which were internal APIs, assert.async() is stricter and fails tests if assert methods are used *after* all done() functions are called (see "test callback execution order"). Related to #5533333.

import base64
from cubicweb.server.utils import crypt_password

dbdriver  = config.system_source_config['db-driver']
from logilab.database import get_db_helper
dbhelper = get_db_helper(driver)

insert = ('INSERT INTO cw_cwuser (cw_creation_date,'
          '                       cw_eid,'
          '                       cw_modification_date,'
          '                       cw_login,'
          '                       cw_firstname,'
          '                       cw_surname,'
          '                       cw_last_login_time,' 
          '                       cw_upassword,'
          '                       cw_cwuri) '
          "VALUES (%(mtime)s, %(eid)s, %(mtime)s, %(login)s, "
          "        %(firstname)s, %(surname)s, %(mtime)s, %(pwd)s, 'foo');")
update = "UPDATE entities SET source='system' WHERE eid=%(eid)s;"
rset = sql("SELECT eid,type,source,extid,mtime FROM entities WHERE source!='system'", ask_confirm=False)
for eid, type, source, extid, mtime in rset:
    if type != 'CWUser':
        print "don't know what to do with entity type", type
        continue
    if not source.lower().startswith('ldap'):
        print "don't know what to do with source type", source
        continue
    extid = base64.decodestring(extid)
    ldapinfos = [x.strip().split('=') for x in extid.split(',')]
    login = ldapinfos[0][1]
    firstname = login.capitalize()
    surname = login.capitalize()
    args = dict(eid=eid, type=type, source=source, login=login,
                firstname=firstname, surname=surname, mtime=mtime,
                pwd=dbhelper.binary_value(crypt_password('toto')))
    print args
    sql(insert, args)
    sql(update, args)

commit()