Commit 6edb2820 authored by Jérome Perrin's avatar Jérome Perrin

administration: add utility script to check external validators on fields

Check that script exists.
parent 1cc2c2db
"""Print all field that uses non existing scripts as external_validator
"""
portal = context.getPortalObject()
restrictedTraverse = portal.restrictedTraverse
skins_tool = portal.portal_skins
for skin_name, skin_path_list in skins_tool.getSkinPaths():
skins_tool.changeSkin(skin_name)
for skin_folder in skin_path_list.split(','):
for form_path, form in skins_tool.ZopeFind(
skins_tool[skin_folder],
obj_metatypes=['ERP5 Form', 'ERP5 Report'],
search_sub=1,
):
for field in form.get_fields():
if field.meta_type == 'ProxyField':
if field.getRecursiveTemplateField(
) is None or field.get_recursive_tales('external_validator'):
continue
try:
external_validator = field.get_recursive_orig_value(
'external_validator')
except KeyError:
continue
else:
if field.get_tales('external_validator'):
continue
try:
external_validator = field.get_orig_value('external_validator')
except KeyError:
continue
if external_validator:
method_name = external_validator.getMethodName()
if restrictedTraverse(method_name, None) is None:
print "{form_path}/{field_id} uses an external validator non existant in {skin_name}: {method_name}".format(
form_path=form_path,
field_id=field.getId(),
skin_name=skin_name,
method_name=method_name,
)
return printed
<?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>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>SkinsTool_checkFieldExternalValidator</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