[Erp5-report] r31445 aurel - /erp5/trunk/products/ERP5/Document/BusinessTemplate.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Dec 23 17:21:07 CET 2009


Author: aurel
Date: Wed Dec 23 17:21:05 2009
New Revision: 31445

URL: http://svn.erp5.org?rev=31445&view=rev
Log:
- rewrite the generateXml method for CatalogMethod and use it to
generate catalog_keys.xml files
- define the preinstall method so that both xml export of catalog
method and catalog_keys files are checked for diff

Modified:
    erp5/trunk/products/ERP5/Document/BusinessTemplate.py

Modified: erp5/trunk/products/ERP5/Document/BusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BusinessTemplate.py?rev=31445&r1=31444&r2=31445&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] Wed Dec 23 17:21:05 2009
@@ -2184,6 +2184,46 @@
           self._filter_type_archive[method_id] = \
                       catalog.filter_dict[method_id]['type']
 
+  def generateXml(self, path):
+    catalog = _getCatalogValue(self)
+    obj = self._objects[path]
+    method_id = obj.id
+    xml_data = '<catalog_method>'
+    if self._method_properties.has_key(method_id):
+      for method_property, value in self._method_properties[method_id].items():
+        xml_data += '\n <item key="%s" type="int">' %(method_property,)
+        xml_data += '\n  <value>%s</value>' %(value,)
+        xml_data += '\n </item>'
+
+      if catalog.filter_dict.has_key(method_id):
+        if catalog.filter_dict[method_id]['filtered']:
+          xml_data += '\n <item key="_is_filtered_archive" type="int">'
+          xml_data += '\n  <value>1</value>'
+          xml_data += '\n </item>'
+          for method in catalog_method_filter_list:
+            try:
+              value = getattr(self, method, '')[method_id]
+            except KeyError:
+              # the method has no key
+              continue
+            if method != '_filter_expression_instance_archive':
+              if type(value) in (type(''), type(u'')):
+                xml_data += '\n <item key="%s" type="str">' %(method,)
+                xml_data += '\n  <value>%s</value>' %(str(value))
+                xml_data += '\n </item>'
+              elif type(value) in (type(()), type([])):
+                xml_data += '\n <item key="%s" type="tuple">'%(method)
+                for item in value:
+                  xml_data += '\n  <value>%s</value>' %(str(item))
+                xml_data += '\n </item>'
+    xml_data += '\n</catalog_method>'
+    return xml_data
+
+  def preinstall(self, context, installed_bt, **kw):
+    modified_object_dict = ObjectTemplateItem.preinstall(self, context, installed_bt, **kw)
+    modified_object_dict.update(BaseTemplateItem.preinstall(self, context, installed_bt, **kw))
+    return modified_object_dict
+
   def export(self, context, bta, **kw):
     catalog = _getCatalogValue(self)
     if catalog is None:
@@ -2204,47 +2244,9 @@
       XMLExportImport.exportXML(obj._p_jar, obj._p_oid, f)
       bta.addObject(obj=f.getvalue(), name=id, path=path)
       # add all datas specific to catalog inside one file
-      method_id = obj.id
-      object_path = os.path.join(path, method_id+'.catalog_keys.xml')
-
-      f = open(object_path, 'wb')
-      xml_data = '<catalog_method>'
-
-      for method_property, value in self._method_properties[method_id].items():
-        xml_data += '\n <item key="%s" type="int">' %(method_property,)
-        xml_data += '\n  <value>%s</value>' %(value,)
-        xml_data += '\n </item>'
-
-      if catalog.filter_dict.has_key(method_id):
-        if catalog.filter_dict[method_id]['filtered']:
-          xml_data += '\n <item key="_is_filtered_archive" type="int">'
-          xml_data += '\n  <value>1</value>'
-          xml_data += '\n </item>'
-          for method in catalog_method_filter_list:
-            value = getattr(self, method, '')[method_id]
-            if method != '_filter_expression_instance_archive':
-              if type(value) in (type(''), type(u'')):
-                xml_data += '\n <item key="%s" type="str">' %(method,)
-                xml_data += '\n  <value>%s</value>' %(str(value))
-                xml_data += '\n </item>'
-              elif type(value) in (type(()), type([])):
-                xml_data += '\n <item key="%s" type="tuple">'%(method)
-                for item in value:
-                  xml_data += '\n  <value>%s</value>' %(str(item))
-                xml_data += '\n </item>'
-      xml_data += '\n</catalog_method>'
-      f.write(xml_data)
-      f.close()
-
-  # Function to generate XML Code Manually
-  def generateXml(self, path=None):
-    obj = self._objects[path]
-    xml_data = '<key_list>'
-    obj.sort()
-    for key in obj:
-      xml_data += '\n <key>%s</key>' %(key)
-    xml_data += '\n</key_list>'
-    return xml_data
+      key_name = os.path.join(obj.id+'.catalog_keys')
+      xml_data = self.generateXml(key)
+      bta.addObject(obj=xml_data, name=key_name, path=path)
 
   def install(self, context, trashbin, **kw):
     ObjectTemplateItem.install(self, context, trashbin, **kw)




More information about the Erp5-report mailing list