misc/scripts/cwuser_ldap2system.py
author Aurelien Campeas <aurelien.campeas@logilab.fr>
Tue, 27 May 2014 18:47:24 +0200
changeset 10087 ed0b076c119b
parent 9460 a2a0bc984863
child 10589 7c23b7de2b8d
permissions -rw-r--r--
[rset] kill the rset._rqlst cache Right now it "works" for the standard, internal uses. However when we will fold ClientConnection and Connection, it will hurt, because suddenly we get more cache hits, and the following situation would become commonplace: * there is an un-annotated _rqlst given by the querier * some view (e.g. facets) requests the .syntax_tree, which takes a copy of _rqlst * the view actually expects the rql syntax tree to be annotated, but it was not, hence we crash. Related to #3837233.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6387
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     1
import base64
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     2
from cubicweb.server.utils import crypt_password
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     3
9460
a2a0bc984863 [config] cleanup/refactor server sources file values handling
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6387
diff changeset
     4
dbdriver  = config.system_source_config['db-driver']
6387
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     5
from logilab.database import get_db_helper
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     6
dbhelper = get_db_helper(driver)
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     7
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     8
insert = ('INSERT INTO cw_cwuser (cw_creation_date,'
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
     9
          '                       cw_eid,'
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    10
          '                       cw_modification_date,'
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    11
          '                       cw_login,'
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    12
          '                       cw_firstname,'
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    13
          '                       cw_surname,'
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    14
          '                       cw_last_login_time,' 
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    15
          '                       cw_upassword,'
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    16
          '                       cw_cwuri) '
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    17
          "VALUES (%(mtime)s, %(eid)s, %(mtime)s, %(login)s, "
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    18
          "        %(firstname)s, %(surname)s, %(mtime)s, %(pwd)s, 'foo');")
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    19
update = "UPDATE entities SET source='system' WHERE eid=%(eid)s;"
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    20
rset = sql("SELECT eid,type,source,extid,mtime FROM entities WHERE source!='system'", ask_confirm=False)
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    21
for eid, type, source, extid, mtime in rset:
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    22
    if type != 'CWUser':
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    23
        print "don't know what to do with entity type", type
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    24
        continue
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    25
    if not source.lower().startswith('ldap'):
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    26
        print "don't know what to do with source type", source
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    27
        continue
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    28
    extid = base64.decodestring(extid)
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    29
    ldapinfos = [x.strip().split('=') for x in extid.split(',')]
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    30
    login = ldapinfos[0][1]
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    31
    firstname = login.capitalize()
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    32
    surname = login.capitalize()
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    33
    args = dict(eid=eid, type=type, source=source, login=login,
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    34
                firstname=firstname, surname=surname, mtime=mtime,
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    35
                pwd=dbhelper.binary_value(crypt_password('toto')))
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    36
    print args
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    37
    sql(insert, args)
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    38
    sql(update, args)
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    39
edbc53707bac new script cwuser_ldap2system
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
diff changeset
    40
commit()