[Erp5-report] r42748 luke - in /erp5/trunk/bt5/vifib_slap: SkinTemplateItem/portal_skins/vi...

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Jan 28 16:31:30 CET 2011


Author: luke
Date: Fri Jan 28 16:31:30 2011
New Revision: 42748

URL: http://svn.erp5.org?rev=42748&view=rev
Log:
- compare send and stored information and do wise update in place (still depending on sent data dict structure)

Modified:
    erp5/trunk/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Computer_updateFromDict.xml
    erp5/trunk/bt5/vifib_slap/bt/revision

Modified: erp5/trunk/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Computer_updateFromDict.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Computer_updateFromDict.xml?rev=42748&r1=42747&r2=42748&view=diff
==============================================================================
--- erp5/trunk/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Computer_updateFromDict.xml [utf8] (original)
+++ erp5/trunk/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Computer_updateFromDict.xml [utf8] Fri Jan 28 16:31:30 2011
@@ -70,14 +70,31 @@ for send_partition in computer_dict[\'pa
     partition.markFree()\n
   partition.edit(reference=send_partition[\'reference\'])\n
   network_interface = send_partition[\'tap\'][\'name\']\n
-  # XXX: non optimal way to "update" partition interface, update = delete + insert\n
-  partition.deleteContent(list(partition.objectIds(portal_type=\'Internet Protocol Address\')))\n
-  for address in send_partition[\'address_list\']:\n
-    partition.newContent(portal_type=\'Internet Protocol Address\',\n
+  to_delete_ip_id_list = []\n
+  to_add_ip_dict_list = send_partition[\'address_list\'][:]\n
+  for address in partition.contentValues(portal_type=\'Internet Protocol Address\'):\n
+    current_dict = {\n
+      \'addr\': address.getIpAddress(),\n
+      \'netmask\': address.getNetmask()\n
+    }\n
+    if not current_dict in to_add_ip_dict_list:\n
+      to_delete_ip_id_list.append(address.getId())\n
+    else:\n
+      to_add_ip_dict_list.remove(current_dict)\n
+  \n
+  for address in to_add_ip_dict_list:\n
+    if to_delete_ip_id_list:\n
+      id = to_delete_ip_id_list.pop()\n
+      address_document = getattr(partition, id)\n
+    else:\n
+      address_document = partition.newContent(portal_type=\'Internet Protocol Address\')\n
+    address_document.edit(\n
       network_interface=network_interface,\n
       ip_address=address[\'addr\'],\n
       netmask=address[\'netmask\'],\n
-      )\n
+    )\n
+  if to_delete_ip_id_list:\n
+    partition.deleteContent(to_delete_ip_id_list)\n
 </string> </value>
         </item>
         <item>
@@ -133,8 +150,13 @@ for send_partition in computer_dict[\'pa
                             <string>None</string>
                             <string>partition</string>
                             <string>network_interface</string>
-                            <string>list</string>
+                            <string>to_delete_ip_id_list</string>
+                            <string>to_add_ip_dict_list</string>
                             <string>address</string>
+                            <string>current_dict</string>
+                            <string>id</string>
+                            <string>getattr</string>
+                            <string>address_document</string>
                           </tuple>
                         </value>
                     </item>

Modified: erp5/trunk/bt5/vifib_slap/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/vifib_slap/bt/revision?rev=42748&r1=42747&r2=42748&view=diff
==============================================================================
--- erp5/trunk/bt5/vifib_slap/bt/revision [utf8] (original)
+++ erp5/trunk/bt5/vifib_slap/bt/revision [utf8] Fri Jan 28 16:31:30 2011
@@ -1 +1 @@
-332
\ No newline at end of file
+333
\ No newline at end of file



More information about the Erp5-report mailing list