[Erp5-report] r43193 kazuhiko - in /erp5/trunk/bt5/erp5_upgrader: SkinTemplateItem/portal_s...

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 8 21:44:57 CET 2011


Author: kazuhiko
Date: Tue Feb  8 21:44:57 2011
New Revision: 43193

URL: http://svn.erp5.org?rev=43193&view=rev
Log:
2011-02-08 Kazuhiko
* rewrite ERP5Site_upgradeBusinessTemplateList more generic based on business template repositories.
* remove upgrading MySQL charset part, that should be handled by buildout MySQL setup and reindexing with clear_catalog=1.
* remove handling zope version and python version, that should be handled by instance creation in buildout.

Modified:
    erp5/trunk/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/ERP5Site_upgradeBusinessTemplateList.xml
    erp5/trunk/bt5/erp5_upgrader/bt/change_log
    erp5/trunk/bt5/erp5_upgrader/bt/revision

Modified: erp5/trunk/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/ERP5Site_upgradeBusinessTemplateList.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/ERP5Site_upgradeBusinessTemplateList.xml?rev=43193&r1=43192&r2=43193&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/ERP5Site_upgradeBusinessTemplateList.xml [utf8] (original)
+++ erp5/trunk/bt5/erp5_upgrader/SkinTemplateItem/portal_skins/erp5_upgrader/ERP5Site_upgradeBusinessTemplateList.xml [utf8] Tue Feb  8 21:44:57 2011
@@ -50,127 +50,101 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>"""\n
+            <value> <string encoding="cdata"><![CDATA[
+
+"""\n
   Check installed business templates one \n
   by one. If one of the business templates does not \n
-  use the latest release, then we need to migrate.\n
-\n
-  NOTE: this means that if a system uses custom\n
-  business templates (ie. dedicate), upgrader \n
-  will for now fail.\n
+  use the latest revision, then we need to install.\n
 """\n
 # Initialize variables\n
-portal_templates = context.getPortalObject().portal_templates\n
-signature = context.ERP5Site_getUpgraderSignature()\n
-release = signature[\'release\']\n
-is_upgradable = False\n
+portal = context.getPortalObject()\n
+portal_templates = portal.portal_templates\n
+signature = portal.ERP5Site_getUpgraderSignature()\n
 message_list = []\n
 \n
-# verify only core is enough for now. \n
-template_version = context.ERP5Site_getBusinessTemplateVersion()\n
-if template_version != release:\n
-  is_upgradable = True\n
-\n
-# No need to upgrade (system is up to date)\n
-if not is_upgradable:\n
-  return message_list\n
-\n
-message_list.append(\\\n
-         "Upgrade Required for Business Templates, Expected: %s , Current: %s." \\\n
-            % (release, template_version))\n
-\n
-# Notify that Business Template requires upgrade\n
-if not upgrade:\n
-  return message_list\n
-\n
-# update all public bt5s\n
 previous_bt5_id = None\n
 bt5_counter = 0\n
+available_bt5_list = portal_templates.getRepositoryBusinessTemplateList(newest_only=True)\n
+available_bt5_id_list = [x.title for x in available_bt5_list]\n
 required_bt5_id_list = signature.get(\'required_bt5_id_list\', [])\n
+if len(required_bt5_id_list) == 0:\n
+  # by default, we try to upgrade all business templates from repositories.\n
+  required_bt5_id_list = [i.title for i in available_bt5_list]\n
 upgradable_bt5_id_list = signature.get(\'upgradable_bt5_id_list\', [])\n
 reinstallable_bt5_id_list = signature.get(\'reinstallable_bt5_id_list\', signature.get(\'reinstalable_bt5_id_list\', []))\n
 before_triggered_bt5_id_dict = signature.get(\'before_triggered_bt5_id_dict\', [])\n
 after_triggered_bt5_id_dict = signature.get(\'after_triggered_bt5_id_dict\', [])\n
 update_catalog_bt5_id_list = signature.get(\'update_catalog_bt5_id_list\', [])\n
 \n
+bt5_id_list = dict([(x, True) for x in list(required_bt5_id_list) + \\\n
+                                       list(upgradable_bt5_id_list) + \\\n
+                                       list(reinstallable_bt5_id_list) \\\n
+                    if x in available_bt5_id_list]).keys()\n
+\n
+# sort by dependencies\n
+bt5_list = [portal_templates.decodeRepositoryBusinessTemplateUid(x.uid) for x in \\\n
+           available_bt5_list if x.title in bt5_id_list]\n
+bt5_list = portal_templates.sortBusinessTemplateList(bt5_list)\n
 \n
-base_url_list = signature.get(\'bt5_base_url_list\', [])\n
 installed_bt5_title_list = [o.getTitle() for o in portal_templates.getInstalledBusinessTemplateList()]\n
 \n
 bt5_counter = portal_templates.countFolder()[0][0]\n
 \n
-def installBT5(bt5_title, previous_bt5, bt5_counter):\n
-  bt5_id = "%s_%s_%s" % (bt5_counter,  bt5_title, release)\n
-  # no need to update a bt5 if it\'s to be explicitly added later \n
-  bt5_url = portal_templates.getBusinessTemplateUrl(base_url_list, bt5_title)\n
-  if portal_templates.has_key(bt5_id):\n
-    raise ValueError, \'Business Template %s has already been imported\' % bt5_id\n
-  if bt5_url is None:\n
-    message_list.append("%s was ignored because was not possible found"\n
-                        "the bt5 into the followed repositories: %s" % \\\n
-                        (bt5_title, base_url_list)  )\n
-    return previous_bt5\n
-  kw = dict(activity = "SQLQueue", tag = bt5_id)\n
+def installBT5(bt5_url, bt5_title, previous_bt5, bt5_counter, force=False):\n
+  bt5_id = "%s_%s" % (bt5_counter,  bt5_title)\n
+  kw = dict(activity="SQLQueue", tag=bt5_id)\n
   if previous_bt5 is not None:\n
     kw[\'after_tag\'] = previous_bt5\n
     # We must make sure all documents from previous installations \n
     # are already indexed (specially categories).\n
     kw[\'after_method_id\'] = "immediateReindexObject"\n
-  update_catalog = bt5_title in update_catalog_bt5_id_list \n
+  update_catalog = bt5_title in update_catalog_bt5_id_list\n
   before_triggered_bt5_id_list = before_triggered_bt5_id_dict.get(bt5_title, ())\n
   after_triggered_bt5_id_list = after_triggered_bt5_id_dict.get(bt5_title, ())\n
   keep_original_list = signature.get(\'keep_original_dict\', {}).get(bt5_title, ())\n
-  portal_templates.activate(**kw).updateBusinessTemplateFromUrl(\n
-                    bt5_url, id = bt5_id,  \n
+  if upgrade:\n
+    portal_templates.activate(**kw).updateBusinessTemplateFromUrl(\n
+                    bt5_url, # id=bt5_id,  \n
                     keep_original_list=keep_original_list,\n
                     before_triggered_bt5_id_list=before_triggered_bt5_id_list,\n
                     after_triggered_bt5_id_list=after_triggered_bt5_id_list,\n
-                    update_catalog=update_catalog)\n
-\n
+                    update_catalog=update_catalog,\n
+                    reinstall=force)\n
   previous_bt5_id = bt5_id\n
   bt5_counter += 1\n
-  message_list.append("\\tUpdate %s as %s"  % (bt5_url, bt5_id))\n
-  return bt5_id\n
-\n
-def reinstallBT5(bt5_title, previous_bt5, bt5_counter):\n
-  bt5_id = "%s_%s_%s" % (bt5_counter, bt5_title, release)\n
-  kw = dict(activity="SQLQueue", tag=bt5_id)\n
-  if previous_bt5 is not None:\n
-    kw[\'after_tag\'] = previous_bt5\n
-    # We must make sure all documents from previous installations \n
-    # are already indexed (specially categories).\n
-    kw[\'after_method_id\'] = "immediateReindexObject"\n
-  update_catalog = bt5_title in update_catalog_bt5_id_list\n
-  portal_templates.activate(**kw).TemplateTool_reinstallBT5(\n
-                                                    bt5_title,\n
-                                                    update_catalog=update_catalog)\n
-\n
-  previous_bt5_id = bt5_id\n
-  bt5_counter += 1\n
-  message_list.append("\\t%s Reinstalling"  % (bt5_id))\n
+  message_list.append("\\tInstall %s from %s"  % (bt5_title, bt5_url))\n
   return bt5_id\n
 \n
 previous_bt5 = None\n
-for bt in upgradable_bt5_id_list:\n
-  if bt in installed_bt5_title_list:\n
-    bt5_counter += 1\n
-    bt_id = installBT5(bt, previous_bt5, bt5_counter)\n
-    previous_bt5 = bt_id\n
-    \n
-for bt in required_bt5_id_list:\n
-  bt5_counter += 1\n
-  bt_id = installBT5(bt, previous_bt5, bt5_counter)\n
-  previous_bt5 = bt_id\n
-\n
-for bt in reinstallable_bt5_id_list:\n
-  bt5_counter += 1\n
-  bt_id = reinstallBT5(bt, previous_bt5, bt5_counter)\n
-  previous_bt5 = bt_id\n
+for repository, bt5_id in bt5_list:\n
+  new_bt = [x for x in available_bt5_list \\\n
+            if portal_templates.decodeRepositoryBusinessTemplateUid(x.uid) == (repository, bt5_id)][0]\n
+  bt5_url = \'/\'.join((repository, bt5_id))\n
+  bt5_title = new_bt.title\n
+  if bt5_title in reinstallable_bt5_id_list:\n
+    bt5_id = installBT5(bt5_url, bt5_title, previous_bt5, bt5_counter, force=True)\n
+    previous_bt5 = bt5_id\n
+  else:\n
+    installed_bt = portal_templates.getInstalledBusinessTemplate(bt5_title, strict=True)\n
+    if installed_bt is not None:\n
+      if installed_bt.getRevision() >= new_bt.revision:\n
+        continue\n
+    if bt5_title in required_bt5_id_list:\n
+      bt5_counter += 1\n
+      bt5_id = installBT5(bt5_url, bt5_title, previous_bt5, bt5_counter)\n
+      previous_bt5 = bt5_id\n
+    elif bt5_title in installed_bt5_title_list: # update_bt5_id_list\n
+      bt5_counter += 1\n
+      bt5_id = installBT5(bt5_url, bt5_title, previous_bt5, bt5_counter)\n
+      previous_bt5 = bt5_id\n
 \n
-message_list.append("Upgrade Executed for Business Configuration using activities.")\n
+message_list.append("Business templates will be installed using activities.")\n
 \n
 return message_list\n
-</string> </value>
+
+
+]]></string> </value>
         </item>
         <item>
             <key> <string>_params</string> </key>

Modified: erp5/trunk/bt5/erp5_upgrader/bt/change_log
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_upgrader/bt/change_log?rev=43193&r1=43192&r2=43193&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_upgrader/bt/change_log [utf8] (original)
+++ erp5/trunk/bt5/erp5_upgrader/bt/change_log [utf8] Tue Feb  8 21:44:57 2011
@@ -1,4 +1,5 @@
 2011-02-08 Kazuhiko
+* rewrite ERP5Site_upgradeBusinessTemplateList more generic based on business template repositories.
 * remove upgrading MySQL charset part, that should be handled by buildout MySQL setup and reindexing with clear_catalog=1.
 * remove handling zope version and python version, that should be handled by instance creation in buildout.
 

Modified: erp5/trunk/bt5/erp5_upgrader/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_upgrader/bt/revision?rev=43193&r1=43192&r2=43193&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_upgrader/bt/revision [utf8] (original)
+++ erp5/trunk/bt5/erp5_upgrader/bt/revision [utf8] Tue Feb  8 21:44:57 2011
@@ -1 +1 @@
-571
\ No newline at end of file
+572
\ No newline at end of file



More information about the Erp5-report mailing list