[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