Commit bafcae56 authored by Romain Courteaud's avatar Romain Courteaud

Rewrite ERP5Site_reindexAll in order not to create all activities in only one transaction.

Trash Folder_reindexAll which was useless, and create a new one used in ERP5Site_reindexAll.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@11615 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 6abfff59
......@@ -68,203 +68,157 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
if clear_catalog:\n
# clear the catalog before reindexing\n
<value> <string>portal = context.getPortalObject() \n
if clear_catalog: \n
# clear the catalog before reindexing \n
catalog = portal.portal_catalog.getSQLCatalog(sql_catalog_id)\n
catalog.manage_catalogClear()\n
# redirect to commit transaction\n
from ZTUtils import make_query\n
query_kw={\'passive_commit\': passive_commit}\n
query_kw={\'passive_commit\': passive_commit} \n
if sql_catalog_id:\n
# XXX make_query doesn\'t support None as an argument\n
query_kw[\'sql_catalog_id\'] = sql_catalog_id\n
qstring = make_query(**query_kw)\n
return context.REQUEST.RESPONSE.redirect(\n
\'%s?%s\' % (script.absolute_url(), qstring))\n
\n
print "#### Indexing person_module, stage 1 ####"\n
# XXX make_query doesn\'t support None as an argument \n
query_kw[\'sql_catalog_id\'] = sql_catalog_id \n
qstring = make_query(**query_kw) \n
return context.REQUEST.RESPONSE.redirect( \n
\'%s?%s\' % (script.absolute_url(), qstring)) \n
\n
# Reindex person module\n
print "#### Indexing person_module, stage 1 ####" \n
person_module=getattr(portal, \'person_module\', None)\n
if person_module is not None :\n
person_module.reindexObject(tag=\'person_stage_1\',\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in person_module.objectValues():\n
o.recursiveReindexObject(tag=\'person_stage_1\',\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
print "#### Indexing translations ####"\n
if person_module is not None : \n
tag = \'person_stage_1\' \n
person_module.activate(tag=tag).Folder_reindexAll( \n
folder_tag=tag, \n
object_tag=tag, \n
sql_catalog_id=sql_catalog_id, \n
passive_commit=passive_commit) \n
\n
print "#### Indexing translations ####" \n
context.ERP5Site_updateTranslationTable(sql_catalog_id=sql_catalog_id)\n
\n
# Reindex categories\n
print "#### Indexing categories ####"\n
context.portal_categories.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_categories.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\', \'person_stage_1\', ),\n
tag=\'category\',\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
print "#### Indexing alarms ####"\n
context.portal_alarms.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_alarms.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\',\'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
folder_tag = \'module\'\n
folder_after_tag = (\'person_stage_1\', \'group_person_stage_1\')\n
object_tag = \'category\'\n
object_after_tag = (\'module\', \'person_stage_1\', \'group_person_stage_1\')\n
\n
print "#### Indexing preferences ####"\n
context.portal_preferences.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
context.portal_categories.activate(\n
tag=folder_tag,\n
after_tag=folder_after_tag).Folder_reindexAll(\n
folder_tag=folder_tag,\n
folder_after_tag=folder_after_tag,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_preferences.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\',\'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
print "#### Indexing alarms ####"\n
print "#### Indexing preferences ####"\n
folder_tag = \'module\'\n
folder_after_tag = (\'person_stage_1\', \'group_person_stage_1\')\n
object_tag = \'document\'\n
object_after_tag = (\'module\', \'category\', \'person_stage_1\', \'group_person_stage_1\')\n
object_priority = 2\n
for folder in [context.portal_alarms, context.portal_preferences]:\n
folder.activate(\n
tag=folder_tag,\n
after_tag=folder_after_tag).Folder_reindexAll(\n
folder_tag=folder_tag,\n
folder_after_tag=folder_after_tag,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
object_priority=object_priority,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# We index simulation first to make sure we can calculate tests\n
# (ie. related quantity)\n
print "#### Indexing simulation ####"\n
context.portal_simulation.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_simulation.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\', \'category\',\n
\'document\', \'person_stage_1\'),\n
tag=\'simulation\',\n
priority=3,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
folder_tag = \'module\'\n
folder_after_tag = (\'person_stage_1\', \'group_person_stage_1\')\n
object_tag = \'simulation\'\n
object_after_tag = (\'module\', \'category\', \'person_stage_1\', \'document\', \'group_person_stage_1\')\n
object_priority = 3\n
context.portal_simulation.activate(\n
tag=folder_tag,\n
after_tag=folder_after_tag).Folder_reindexAll(\n
folder_tag=folder_tag,\n
folder_after_tag=folder_after_tag,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# We index templates secondly\n
print "#### Indexing templates ####"\n
context.portal_templates.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_templates.objectValues():\n
o.reindexObject(after_tag=(\'module\', \'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# Next we index trash bins\n
print "#### Indexing trash bins ####"\n
context.portal_trash.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_trash.objectValues():\n
o.reindexObject(after_tag=(\'module\', \'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# Next we index domains\n
print "#### Indexing domains ####"\n
context.portal_domains.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_domains.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\', \'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# Next we index applied rules\n
print "#### Indexing applied rules ####"\n
context.portal_rules.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_rules.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\',\'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# Next we index delivery builders\n
print "#### Indexing delivery builders ####"\n
context.portal_deliveries.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_deliveries.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\', \'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# Next we index order builders\n
print "#### Indexing order builders ####"\n
context.portal_orders.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in context.portal_orders.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\',\'category\', \'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
folder_tag = \'module\'\n
folder_after_tag = (\'person_stage_1\', \'group_person_stage_1\')\n
object_tag = \'document\'\n
object_after_tag = (\'module\', \'category\', \'person_stage_1\', \'group_person_stage_1\')\n
object_priority = 2\n
for folder in [context.portal_templates, context.portal_trash,\n
context.portal_domains, context.portal_rules,\n
context.portal_deliveries, context.portal_orders]:\n
folder.activate(\n
tag=folder_tag,\n
after_tag=folder_after_tag).Folder_reindexAll(\n
folder_tag=folder_tag,\n
folder_after_tag=folder_after_tag,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
object_priority=object_priority,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# Then we index everything except inventories\n
for folder in portal.objectValues(("ERP5 Folder",)):\n
print "#### Indexing contents inside folder %s ####" % folder.id\n
if folder.getId() not in (\'inventory_module\',):\n
folder.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in folder.objectValues():\n
try:\n
o.recursiveReindexObject(after_tag=(\'module\', \'category\',\n
\'person_stage_1\'),\n
tag=\'document\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
except:\n
context.log(\'Unable to reindex\', \'error: folder=%s, o=%s\' %\n
(repr(folder.getId()), repr(o)))\n
raise\n
\n
folder.activate(\n
tag=folder_tag,\n
after_tag=folder_after_tag).Folder_reindexAll(\n
folder_tag=folder_tag,\n
folder_after_tag=folder_after_tag,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
object_priority=object_priority,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# Then we index inventories\n
object_tag = \'inventory\'\n
object_after_tag = (\'module\', \'category\', \'person_stage_1\', \'document\', \'group_person_stage_1\')\n
for folder in portal.objectValues(("ERP5 Folder",)):\n
if folder.getId() in (\'inventory_module\',):\n
print "#### Indexing contents inside folder %s ####" % folder.id\n
folder.reindexObject(tag=\'module\',\n
after_tag=(\'person_stage_1\', ),\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
for o in folder.objectValues():\n
o.recursiveReindexObject(after_tag=(\'module\', \'document\',\n
\'category\', \'person_stage_1\'),\n
tag=\'inventory\',\n
priority=2,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
folder.activate(\n
tag=folder_tag,\n
after_tag=folder_after_tag).Folder_reindexAll(\n
folder_tag=folder_tag,\n
folder_after_tag=folder_after_tag,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
object_priority=object_priority,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit)\n
\n
# start activty from simulation because the erp5site is not an active object\n
context.portal_simulation.activate(\n
after_tag=(\'inventory\', \'simulation\', \'person_stage_1\'),\n
after_tag=(\'inventory\', \'simulation\', \'person_stage_1\', \'group_person_stage_1\'),\n
priority=3\n
).InventoryModule_reindexMovementList(\n
sql_catalog_id=sql_catalog_id,\n
......@@ -285,6 +239,12 @@ return printed\n
<none/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>sql_catalog_id=None, passive_commit=1, clear_catalog=0</string> </value>
......@@ -319,7 +279,7 @@ return printed\n
<string>_print_</string>
<string>_print</string>
<string>_getattr_</string>
<string>context</string>
<string>context</string>
<string>portal</string>
<string>catalog</string>
<string>ZTUtils</string>
......@@ -328,14 +288,18 @@ return printed\n
<string>_write_</string>
<string>_apply_</string>
<string>qstring</string>
<string>script</string>
<string>script</string>
<string>getattr</string>
<string>None</string>
<string>person_module</string>
<string>tag</string>
<string>folder_tag</string>
<string>folder_after_tag</string>
<string>object_tag</string>
<string>object_after_tag</string>
<string>object_priority</string>
<string>_getiter_</string>
<string>o</string>
<string>folder</string>
<string>repr</string>
</tuple>
</value>
</item>
......
......@@ -68,36 +68,69 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>error_list = []\n
return_list = []\n
<value> <string>folder = context\n
\n
#for object in context.objectValues():\n
error_list += context.reindexAll(object=context,request=context)\n
# Reindex folder\n
folder_kw = {\n
\'tag\': folder_tag,\n
\'after_tag\': folder_after_tag,\n
\'sql_catalog_id\': sql_catalog_id,\n
\'passive_commit\': passive_commit\n
}\n
for key, value in folder_kw.items():\n
if value is None:\n
folder_kw.pop(key)\n
\n
nb_types = {}\n
folder.reindexObject(**folder_kw)\n
\n
for error in error_list:\n
# We count the number of each portal type\n
if error[1]==\'portal_type\':\n
type = error[3]\n
if nb_types.has_key(type):\n
nb_types[type] = nb_types[type] + 1\n
else:\n
nb_types[type] = 1\n
else: \n
#print error\n
return_list.append(error)\n
# Reindex folder content\n
group_tag = None\n
group_after_tag = object_after_tag\n
if object_tag is not None:\n
group_tag = "group_%s" % object_tag\n
if object_after_tag is not None:\n
group_after_tag = object_after_tag + (object_tag,)\n
else:\n
group_after_tag = (object_tag, )\n
\n
for type in nb_types.keys():\n
# Find the number of each portal type in the catalog\n
count_result = context.portal_catalog.countResults(portal_type=type)\n
nb_catalog = count_result[0][0]\n
if nb_types[type] != nb_catalog:\n
message = "XXX Warning for %s: there is %i lines in the catalog instead of %i" % \\\n
(type,nb_catalog,nb_types[type])\n
return_list.append((\'Count Error\', \'PortalRoot_reindexAll\',1,message))\n
object_kw = {\n
\'tag\': folder_tag,\n
\'after_tag\': folder_after_tag,\n
\'sql_catalog_id\': sql_catalog_id,\n
\'passive_commit\': passive_commit\n
}\n
for key, value in object_kw.items():\n
if value is None:\n
object_kw.pop(key)\n
\n
return return_list\n
\n
id_list = []\n
len = 0\n
for obj in folder.objectValues():\n
id_list.append(obj.getId())\n
len += 1\n
if len==100:\n
\n
folder.activate(activity=\'SQLQueue\', priority=object_priority, **object_kw).Folder_reindexObjectList(\n
id_list,\n
object_priority=object_priority,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit,\n
)\n
id_list = []\n
len = 0\n
\n
\n
folder.activate(activity=\'SQLQueue\', priority=object_priority, **object_kw).Folder_reindexObjectList(\n
id_list,\n
object_priority=object_priority,\n
object_tag=object_tag,\n
object_after_tag=object_after_tag,\n
sql_catalog_id=sql_catalog_id,\n
passive_commit=passive_commit,\n
)\n
</string> </value>
</item>
<item>
......@@ -112,9 +145,15 @@ return return_list\n
<none/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>request=None</string> </value>
<value> <string>folder_tag=None, folder_after_tag=None, object_tag=None, object_after_tag=None, object_priority=1, sql_catalog_id=None, passive_commit=1</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -134,26 +173,34 @@ return return_list\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>request</string>
<string>error_list</string>
<string>return_list</string>
<string>_getattr_</string>
<string>folder_tag</string>
<string>folder_after_tag</string>
<string>object_tag</string>
<string>object_after_tag</string>
<string>object_priority</string>
<string>sql_catalog_id</string>
<string>passive_commit</string>
<string>context</string>
<string>nb_types</string>
<string>folder</string>
<string>folder_kw</string>
<string>_getiter_</string>
<string>error</string>
<string>_getitem_</string>
<string>type</string>
<string>_write_</string>
<string>count_result</string>
<string>nb_catalog</string>
<string>message</string>
<string>_getattr_</string>
<string>key</string>
<string>value</string>
<string>None</string>
<string>_apply_</string>
<string>group_tag</string>
<string>group_after_tag</string>
<string>object_kw</string>
<string>id_list</string>
<string>len</string>
<string>obj</string>
</tuple>
</value>
</item>
......@@ -167,6 +214,12 @@ return return_list\n
<value>
<tuple>
<none/>
<none/>
<none/>
<none/>
<int>1</int>
<none/>
<int>1</int>
</tuple>
</value>
</item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</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>folder = context\n
\n
object_kw = {\n
\'tag\': object_tag,\n
\'after_tag\': object_after_tag,\n
\'sql_catalog_id\': sql_catalog_id,\n
\'passive_commit\': passive_commit\n
}\n
for key, value in object_kw.items():\n
if value is None:\n
object_kw.pop(key)\n
\n
for id in id_list:\n
obj = folder.restrictedTraverse(id)\n
obj.recursiveReindexObject(priority=object_priority,\n
**object_kw)\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>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>id_list, object_tag=None, object_after_tag=None, object_priority=1, sql_catalog_id=None, passive_commit=1</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>6</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>id_list</string>
<string>object_tag</string>
<string>object_after_tag</string>
<string>object_priority</string>
<string>sql_catalog_id</string>
<string>passive_commit</string>
<string>context</string>
<string>folder</string>
<string>object_kw</string>
<string>_getiter_</string>
<string>_getattr_</string>
<string>key</string>
<string>value</string>
<string>None</string>
<string>id</string>
<string>obj</string>
<string>_apply_</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<none/>
<none/>
<int>1</int>
<none/>
<int>1</int>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Folder_reindexObjectList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
211
\ No newline at end of file
213
\ No newline at end of file
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