Hi Tibor,
>> As I'm planning to use the local passwords for some time yet, which is
>> the cleanest way to set all login_method values to Local?
>
> Something like this:
>
> | from invenio.dbquery import run_sql
> | from invenio.webuser import get_user_preferences
> | from invenio.webuser import set_user_preferences
> | uids = [row[0] for row in run_sql("SELECT id FROM user")]
> | for uid in uids:
> | prefs = get_user_preferences(uid)
> | prefs['login_method'] = 'Local'
> | set_user_preferences(uid, prefs)
Thanks, I figured it out already:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Time-stamp: <2009.12.17 11:35:49 migrate_ddd_local_accounts_to_local.py
[email protected]>
from invenio.dbquery import run_sql
from invenio.webuser import get_user_preferences, set_user_preferences
from invenio.access_control_config import CFG_EXTERNAL_AUTHENTICATION
done = [0,0]
res = run_sql('select id from user;')
for user in res:
done[0] += 1
uid = user[0]
prefs = get_user_preferences(uid)
if prefs['login_method'] != 'Local':
prefs['login_method'] = 'Local'
set_user_preferences(uid, prefs)
done[1] += 1
print "checked %d users, changed %d accounts" % (done[0], done[1])
$ ./migrate_ddd_local_accounts_to_local.py
checked 3641480 users, changed 2243 accounts
Sorry for bothering you,
Ferran