From 1ff50d0dc6cea7f561760c4cc14fba6ab4501e2b Mon Sep 17 00:00:00 2001 From: Ivan Tyagov <ivan@nexedi.com> Date: Wed, 11 Nov 2009 13:06:22 +0000 Subject: [PATCH] Add alarms and support check script that will periodically (if enabled) check Localizers's MessageCatalog instances ratio of not translated messages. Add script that can delete not translated ones. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@30505 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../ERP5Administration.py | 31 ++++ .../Alarm_checkLocalizer.xml | 159 ++++++++++++++++++ ...Catalog_deleteNotTranslatedMessageDict.xml | 31 ++++ .../MessageCatalog_getMessageDict.xml | 31 ++++ ...ageCatalog_getNotTranslatedMessageDict.xml | 31 ++++ bt5/erp5_administration/bt/revision | 2 +- 6 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_checkLocalizer.xml create mode 100644 bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_deleteNotTranslatedMessageDict.xml create mode 100644 bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getMessageDict.xml create mode 100644 bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getNotTranslatedMessageDict.xml diff --git a/bt5/erp5_administration/ExtensionTemplateItem/ERP5Administration.py b/bt5/erp5_administration/ExtensionTemplateItem/ERP5Administration.py index a049c9153e..969944d355 100644 --- a/bt5/erp5_administration/ExtensionTemplateItem/ERP5Administration.py +++ b/bt5/erp5_administration/ExtensionTemplateItem/ERP5Administration.py @@ -59,3 +59,34 @@ def checkFolderHandler(self, fixit=0, **kw): error_list.append(message) LOG('checkFolderHandler', INFO, message) return error_list + + +def MessageCatalog_getMessageDict(self): + """ + Get Localizer's MessageCatalog instance messages. + """ + d = {} + for k,v in self._messages.iteritems(): + d[k] = v + return d + +def MessageCatalog_getNotTranslatedMessageDict(self): + """ + Get Localizer's MessageCatalog instance messages that are NOT translated. + """ + not_translated_message_dict = {} + messages = MessageCatalog_getMessageDict(self) + for k,v in messages.iteritems(): + if not len(v): + not_translated_message_dict[k] = v + return not_translated_message_dict + +def MessageCatalog_deleteNotTranslatedMessageDict(self): + """ + Delete from Localizer's MessageCatalog instance messages that are NOT translated. + """ + not_translated_message_dict = MessageCatalog_getNotTranslatedMessageDict(self) + for k,v in not_translated_message_dict.iteritems(): + # delete message from dict + del(self._messages[k]) + return len(not_translated_message_dict.keys()) diff --git a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_checkLocalizer.xml b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_checkLocalizer.xml new file mode 100644 index 0000000000..bfaf51e5d0 --- /dev/null +++ b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_checkLocalizer.xml @@ -0,0 +1,159 @@ +<?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>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[ + +"""\n + Check that number of untranslated messages for a Localizer MessageCatalog instance\n + doesn\'t exceed a fixed alarm_warn_ratio.\n +"""\n +alarm_warn_ratio = 0.25\n +\n +localizer = context.Localizer\n +for message_catalog in localizer.objectValues(\'MessageCatalog\'):\n + all = len(message_catalog.MessageCatalog_getMessageDict().keys())\n + not_translated = len(message_catalog.MessageCatalog_getNotTranslatedMessageDict().keys())\n + enable_warning = not_translated > all*alarm_warn_ratio\n + if enable_warning:\n + # we have more than allowed number of untranslated messages,\n + # fire alarm\n + context.log("Too many untranslated Localizer messages for %s %s/%s" %(message_catalog, all, not_translated))\n + return True\n +\n +return False\n + + +]]></string> </value> + </item> + <item> + <key> <string>_code</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>activity_count=1, bundle_object_count=100, **kw</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>2</int> </value> + </item> + <item> + <key> <string>co_varnames</string> </key> + <value> + <tuple> + <string>activity_count</string> + <string>bundle_object_count</string> + <string>kw</string> + <string>alarm_warn_ratio</string> + <string>_getattr_</string> + <string>context</string> + <string>localizer</string> + <string>_getiter_</string> + <string>message_catalog</string> + <string>len</string> + <string>all</string> + <string>not_translated</string> + <string>enable_warning</string> + <string>True</string> + <string>False</string> + </tuple> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>func_defaults</string> </key> + <value> + <tuple> + <int>1</int> + <int>100</int> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Alarm_checkLocalizer</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_deleteNotTranslatedMessageDict.xml b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_deleteNotTranslatedMessageDict.xml new file mode 100644 index 0000000000..2415c9e44c --- /dev/null +++ b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_deleteNotTranslatedMessageDict.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>MessageCatalog_deleteNotTranslatedMessageDict</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5Administration</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>MessageCatalog_deleteNotTranslatedMessageDict</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Delete from Localizer\'s MessageCatalog instance messages that are NOT translated.</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getMessageDict.xml b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getMessageDict.xml new file mode 100644 index 0000000000..ac5b193679 --- /dev/null +++ b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getMessageDict.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>MessageCatalog_getMessageDict</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5Administration</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>MessageCatalog_getMessageDict</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getNotTranslatedMessageDict.xml b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getNotTranslatedMessageDict.xml new file mode 100644 index 0000000000..ee05635380 --- /dev/null +++ b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/MessageCatalog_getNotTranslatedMessageDict.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>MessageCatalog_getNotTranslatedMessageDict</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5Administration</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>MessageCatalog_getNotTranslatedMessageDict</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_administration/bt/revision b/bt5/erp5_administration/bt/revision index 2fb681e3f9..9cd72aa941 100644 --- a/bt5/erp5_administration/bt/revision +++ b/bt5/erp5_administration/bt/revision @@ -1 +1 @@ -71 \ No newline at end of file +72 \ No newline at end of file -- 2.30.9