Commit ec9b9872 authored by Łukasz Nowak's avatar Łukasz Nowak

Simplify and cover more cases.

parent 552be8fc
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </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 encoding="cdata"><![CDATA[
"""Tries to fix issue with many applied rules associated to delivery"""\n
\n
if context.getPortalType() not in context.getPortalDeliveryTypeList():\n
raise TypeError(\'%s is not a delivery\' % context.getPath())\n
\n
portal = context.getPortalObject()\n
\n
kw = dict(\n
portal_type=\'Applied Rule\',\n
default_causality_uid=context.getUid()\n
)\n
\n
root_applied_rule_count = portal.portal_catalog.countResults(**kw)[0][0]\n
\n
if root_applied_rule_count <= 1:\n
# nothing to do\n
return\n
\n
delete_candidate_id_list = []\n
\n
for root_applied_rule in portal.portal_catalog(**kw):\n
if len(root_applied_rule.objectIds()) == 0:\n
delete_candidate_id_list.append(root_applied_rule.getId())\n
\n
portal.portal_simulation.deleteContent(delete_candidate_id_list)\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Delivery_fixMultipleRootAppliedRule</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -50,8 +50,47 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>state_change[\'object\'].Delivery_fixMultipleRootAppliedRule()\n
</string> </value>
<value> <string encoding="cdata"><![CDATA[
"""Tries to fix issue with many applied rules associated to delivery"""\n
delivery = state_change[\'object\']\n
\n
if delivery.getPortalType() not in delivery.getPortalDeliveryTypeList():\n
raise TypeError(\'%s is not a delivery\' % delivery.getPath())\n
\n
portal = delivery.getPortalObject()\n
\n
kw = dict(\n
portal_type=\'Applied Rule\',\n
default_causality_uid=delivery.getUid()\n
)\n
\n
root_applied_rule_count = portal.portal_catalog.countResults(**kw)[0][0]\n
\n
if delivery.getPortalType() == \'Sale Packing List\' \\\n
and delivery.getCausalityValue(portal_type=\'Sale Order\') is not None:\n
limit = 0\n
always_remove = True\n
else:\n
limit = 1\n
always_remove = False\n
\n
if root_applied_rule_count <= limit:\n
# nothing to do\n
return\n
\n
delete_candidate_id_list = []\n
\n
rule_list = [q for q in portal.portal_catalog(**kw)]\n
rule_list = rule_list[limit:]\n
for root_applied_rule in rule_list:\n
if always_remove or len(root_applied_rule.contentValues()) == 0:\n
delete_candidate_id_list.append(root_applied_rule.getId())\n
\n
portal.portal_simulation.deleteContent(delete_candidate_id_list)\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
......
800
\ No newline at end of file
801
\ 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