From 250956a84e9ab4693950ef34b02a1627412e167a Mon Sep 17 00:00:00 2001
From: Rafael Monnerat <rafael@nexedi.com>
Date: Thu, 27 Sep 2012 01:35:07 +0200
Subject: [PATCH] Apply changes on erp5_promise present on master

 - Create System Preference if do not exist
 - Handle BusinessTemplateUnknownError when portal_templates is unable to handle depedencies.
---
 .../erp5_promise/Alarm_checkPromiseBt5.xml    | 35 ++++++++++++-------
 .../Alarm_installPromiseConversionServer.xml  |  9 ++++-
 2 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_checkPromiseBt5.xml b/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_checkPromiseBt5.xml
index c79beca427..eaa1913a82 100644
--- a/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_checkPromiseBt5.xml
+++ b/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_checkPromiseBt5.xml
@@ -51,8 +51,10 @@
         <item>
             <key> <string>_body</string> </key>
             <value> <string>from Products.CMFActivity.ActiveResult import ActiveResult\n
+from Products.ERP5.Tool.TemplateTool import BusinessTemplateUnknownError\n
 \n
 portal = context.getPortalObject()\n
+template_tool = portal.portal_templates\n
 bt5 = portal.getPromiseParameter(\'portal_templates\', \'expected_bt5\')\n
 \n
 if bt5 is None:\n
@@ -60,26 +62,35 @@ if bt5 is None:\n
 \n
 active_result = ActiveResult()\n
 \n
-portal.portal_templates.updateRepositoryBusinessTemplateList(portal.portal_templates.getRepositoryList())\n
+template_tool.updateRepositoryBusinessTemplateList(\n
+  template_tool.getRepositoryList())\n
 \n
-bt5_list = [x[1] for x in portal.portal_templates.resolveBusinessTemplateListDependency(bt5.split(), newest_only=True)]\n
-bt5_list.extend([x.getTitle() for x in portal.portal_templates.getUpdatedRepositoryBusinessTemplateList()])\n
-bt5_list = list(set(bt5_list))\n
+try:\n
+  bt5_list = [x[1] for x in template_tool.resolveBusinessTemplateListDependency(\n
+                                                    bt5.split(),\n
+                                                    newest_only=True)]\n
 \n
-# XXX Can not import BusinessTemplateUnknownError\n
-# except BusinessTemplateUnknownError, error:\n
-#   active_result.edit(\n
-#     summary="Unable to resolve bt5 dependencies", \n
-#     severity=5, \n
-#     detail=error)\n
+  bt5_list.extend([x.getTitle() for x in \\\n
+                   template_tool.getUpdatedRepositoryBusinessTemplateList()])\n
 \n
-severity = len(bt5_list)\n
-if severity == 0:\n
+  bt5_list = list(set(bt5_list))\n
+  severity = len(bt5_list)\n
+\n
+except BusinessTemplateUnknownError, error:\n
+  severity = -1\n
+  detail = str(error)\n
+\n
+if severity == -1:\n
+  severity = 5\n
+  summary = "Unable to resolve bt5 dependencies"\n
+\n
+elif severity == 0:\n
   summary = "Nothing to do."\n
   detail = ""\n
 else:\n
   summary = "Upgrade needed"\n
   detail = "Needed to install %s" % \', \'.join(bt5_list)\n
+\n
 active_result.edit(\n
   summary=summary, \n
   severity=severity,\n
diff --git a/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_installPromiseConversionServer.xml b/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_installPromiseConversionServer.xml
index 25ec735bbc..193a0d68d4 100644
--- a/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_installPromiseConversionServer.xml
+++ b/bt5/erp5_promise/SkinTemplateItem/portal_skins/erp5_promise/Alarm_installPromiseConversionServer.xml
@@ -58,7 +58,14 @@ domain_port = promise_url.split(\'//\')[1].split(\'/\')[0]\n
 port = domain_port.split(\':\')[-1]\n
 domain = domain_port[:-(len(port)+1)]\n
 \n
-portal.portal_preferences.getActiveSystemPreference().edit(\n
+system_preference = portal_preferences.getActiveSystemPreference()\n
+if system_preference is None:\n
+  system_preference = portal_preferences.newContent(\n
+                 portal_type="System Preference", \n
+                 title="Created by Promise Alarms")\n
+  system_preference.enable()\n
+\n
+system_preference.edit(\n
   preferred_ooodoc_server_address=domain,\n
   preferred_ooodoc_server_port_number=port,\n
 )\n
-- 
2.30.9