Commit b21db722 authored by Vincent Pelletier's avatar Vincent Pelletier

Add a script and a ZSQLMethod to reindex latest indexed objects. Typical use...

Add a script and a ZSQLMethod to reindex latest indexed objects. Typical use is when restoring a ZODB which is older than current catalog by some known amount of time. For that amount of time, it unindexes all objects which are indexed but do not exist in ZODB and reindex all the others.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@16230 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent d2f71506
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># Reindex objects which indexation_timestamp is at most\n
# delta seconds before current time (ie, bound inclued).\n
# Unindex objects which cannot be found.\n
# Default delta is 172800 (=2*24*60*60=2 days)\n
\n
portal = context.getPortalObject()\n
catalog = portal.portal_catalog.getSQLCatalog()\n
candidate_list = context.ERP5Site_zGetLatedtIndexedObjectList(delta=delta)\n
\n
reindex_count = 0\n
unindex_count = 0\n
\n
for candidate in candidate_list:\n
path = candidate[\'path\']\n
try:\n
object = portal.restrictedTraverse(path)\n
except KeyError:\n
# Object is unreachable, remove it from catalog\n
# Use SQLQueue because all activities are triggered on the same object,\n
# and SQLDict keeps only one.\n
catalog.activate(activity="SQLQueue").unindexObject(uid=candidate[\'uid\'])\n
unindex_count += 1\n
else:\n
object.reindexObject()\n
reindex_count += 1\n
\n
print \'%s object reindexed, %s object unindexed\' % (reindex_count, unindex_count)\n
return printed\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>delta=172800</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>delta</string>
<string>_print_</string>
<string>_print</string>
<string>_getattr_</string>
<string>context</string>
<string>portal</string>
<string>catalog</string>
<string>candidate_list</string>
<string>reindex_count</string>
<string>unindex_count</string>
<string>_getiter_</string>
<string>candidate</string>
<string>_getitem_</string>
<string>path</string>
<string>object</string>
<string>KeyError</string>
<string>_inplacevar_</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<int>172800</int>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_reindexLatestIndexedObjects</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="SQL" module="Products.ZSQLMethods.SQL"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_arg</string> </key>
<value>
<object>
<klass>
<global name="Args" module="Shared.DC.ZRDB.Aqueduct"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_data</string> </key>
<value>
<dictionary>
<item>
<key> <string>delta</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string>0</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>int</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>_keys</string> </key>
<value>
<list>
<string>delta</string>
</list>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_col</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>name</string> </key>
<value> <string>path</string> </value>
</item>
<item>
<key> <string>null</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>t</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>24</int> </value>
</item>
</dictionary>
</list>
</value>
</item>
<item>
<key> <string>arguments_src</string> </key>
<value> <string>delta:int=0</string> </value>
</item>
<item>
<key> <string>connection_id</string> </key>
<value> <string>erp5_sql_connection</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_zGetLatedtIndexedObjectList</string> </value>
</item>
<item>
<key> <string>src</string> </key>
<value> <string encoding="cdata"><![CDATA[
SELECT\n
uid, path\n
FROM\n
catalog\n
WHERE\n
path != \'reserved\'\n
AND CURRENT_TIMESTAMP - indexation_timestamp <= <dtml-sqlvar delta type="int">\n
ORDER BY\n
indexation_timestamp DESC
]]></string> </value>
</item>
<item>
<key> <string>template</string> </key>
<value>
<object>
<klass>
<global name="__newobj__" module="copy_reg"/>
</klass>
<tuple>
<global name="SQL" module="Shared.DC.ZRDB.DA"/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string encoding="cdata"><![CDATA[
<string>
]]></string> </value>
</item>
<item>
<key> <string>_vars</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>globals</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>raw</string> </key>
<value> <string encoding="cdata"><![CDATA[
SELECT\n
uid, path\n
FROM\n
catalog\n
WHERE\n
path != \'reserved\'\n
AND CURRENT_TIMESTAMP - indexation_timestamp <= <dtml-sqlvar delta type="int">\n
ORDER BY\n
indexation_timestamp DESC
]]></string> </value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment