cco.common.psu: improvements, provide index_all() function

This commit is contained in:
Helmut Merz 2024-10-04 16:08:36 +02:00
parent 994dc8ea3e
commit 2f72aaf807

View file

@ -31,15 +31,20 @@ from cybertools.util.date import date2TimeStamp, strptime
from cybertools.util.jeep import Jeep from cybertools.util.jeep import Jeep
from loops.common import adapted, baseObject from loops.common import adapted, baseObject
from loops.util import getObjectForUid, getUidForObject, getCatalog, reindex from loops.util import getObjectForUid, getUidForObject, getCatalog, reindex
#from xxx import config
os.environ['NLS_LANG'] = 'German_Germany.UTF8' os.environ['NLS_LANG'] = 'German_Germany.UTF8'
try:
import config
except ImportError:
print('*** config file could not be loaded!')
config = None
sc = Jeep() # shortcuts sc = Jeep() # shortcuts
def setup(loopsRootPath='sites/loops', config=None, zopeconf='zope.conf'): def setup(loopsRootPath='sites/loops', zopeconf='zope.conf', config=config):
global conn, sm, smdefault, intids, pau, loopsRoot, sc global conn, root, sm, smdefault, intids, pau, loopsRoot, sc
conn = wsgi.config(zopeconf).open() conn = wsgi.config(zopeconf).open()
root = conn.root()['Application'] root = conn.root()['Application']
setSite(root) setSite(root)
@ -49,7 +54,7 @@ def setup(loopsRootPath='sites/loops', config=None, zopeconf='zope.conf'):
pau = smdefault['PluggableAuthentication'] pau = smdefault['PluggableAuthentication']
user = getattr(config, 'shell_user', 'zope.manager') user = getattr(config, 'shell_user', 'zope.manager')
password = (getattr(config, 'shell_pw', None) or password = (getattr(config, 'shell_pw', None) or
raw_input('Enter manager password: ')) input('Enter manager password: '))
login(Principal(user, password, u'Manager')) login(Principal(user, password, u'Manager'))
loopsRoot = root loopsRoot = root
for name in loopsRootPath.split('/'): for name in loopsRootPath.split('/'):
@ -59,6 +64,9 @@ def setup(loopsRootPath='sites/loops', config=None, zopeconf='zope.conf'):
for name in ('standard', 'hasType',): for name in ('standard', 'hasType',):
sc[name] = sc.concepts[name] sc[name] = sc.concepts[name]
def close():
conn.close()
def byuid(uid): def byuid(uid):
return getObjectForUid(uid) return getObjectForUid(uid)
@ -185,11 +193,22 @@ def loop(message, objects, fct, **kw):
# indexing # indexing
def reindex_objects(objs, **kw): def reindex_objects(objs, **kw):
catalog = util.getCatalog(objs[0]) catalog = getCatalog(objs[0])
def do_reindex(obj, info): def do_reindex(obj, info):
util.reindex(obj, catalog) util.reindex(obj, catalog)
loop('reindex %s objects' % len(objs), objs, do_reindex, **kw) loop('reindex %s objects' % len(objs), objs, do_reindex, **kw)
def reindex_all(root, step=1000):
catalog = getCatalog(root)
def _updateObj(params, info):
uid, obj = params
for index in catalog.values():
index.index_doc(uid, obj)
info = startup('Indexing all objects', step=step)
for uid, obj in catalog._visitSublocations():
update(_updateObj, (uid, obj), info)
finish(info)
# some common repair tasks # some common repair tasks