[Erp5-report] r33779 yo - /erp5/trunk/products/ERP5/Document/BusinessTemplate.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Mar 17 08:05:16 CET 2010


Author: yo
Date: Wed Mar 17 08:05:15 2010
New Revision: 33779

URL: http://svn.erp5.org?rev=33779&view=rev
Log:
Change DocumentTemplateItem and its subclasses not to put a class name as a prefix into each key when being built. Also, fix some coding crimes.

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=33779&r1=33778&r2=33779&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] Wed Mar 17 08:05:15 2010
@@ -349,8 +349,10 @@
       path = os.path.normpath(path)
       object_path = os.path.join(path, name)
     f = open(object_path+ext, 'wb')
-    f.write(str(obj))
-    f.close()
+    try:
+      f.write(str(obj))
+    finally:
+      f.close()
 
   def _initImport(self, file=None, path=None, **kw):
     # Normalize the paths to eliminate the effect of double-slashes.
@@ -428,8 +430,10 @@
       path = os.path.normpath(path)
       object_path = os.path.join(path, name)
     f = open(object_path+ext, 'wb')
-    f.write(str(obj))
-    f.close()
+    try:
+      f.write(str(obj))
+    finally:
+      f.close()
 
   def finishCreation(self, name):
     self.tar.add(name)
@@ -3124,23 +3128,20 @@
 
   def build(self, context, **kw):
     BaseTemplateItem.build(self, context, **kw)
-    for id in self._archive.keys():
-      self._objects[self.__class__.__name__+'/'+id] = self.local_file_reader_name(id)
+    for key in self._archive.iterkeys():
+      self._objects[key] = self.local_file_reader_name(key)
 
   def preinstall(self, context, installed_item, **kw):
     modified_object_list = {}
     if context.getTemplateFormatVersion() == 1:
       new_keys = self._objects.keys()
-      new_dict = PersistentMapping()
       # fix key if necessary in installed bt for diff
+      extra_prefix = self.__class__.__name__ + '/'
       for key in installed_item._objects.keys():
-        if self.__class__.__name__ in key:
-          new_key = key[len('%s/' % self.__class__.__name__):]
-          new_dict[new_key] = installed_item._objects[key]
-        else:
-          new_dict[key] = installed_item._objects[key]
-      if len(new_dict):
-        installed_item._objects = new_dict
+        if key.startswith(extra_prefix):
+          new_key = key[len(extra_prefix):]
+          installed_item._objects[new_key] = installed_item._objects[key]
+          del installed_item._objects[key]
       for path in new_keys:
         if installed_item._objects.has_key(path):
           # compare object to see if there is changes
@@ -3177,7 +3178,7 @@
             self.local_file_writer_name(name, text, create=0)
           except IOError, error:
             LOG("BusinessTemplate.py", WARNING, "Cannot install class %s on file system" %(name,))
-            if error.errno :
+            if error.errno:
               raise
             continue
           if self.local_file_importer_name is not None:
@@ -3207,8 +3208,8 @@
       object_keys = [object_path]
     else:
       object_keys = self._archive.keys()
-    for id in object_keys:
-      self.local_file_remover_name(id)
+    for key in object_keys:
+      self.local_file_remover_name(key)
     BaseTemplateItem.uninstall(self, context, **kw)
 
   def export(self, context, bta, **kw):
@@ -3216,9 +3217,13 @@
       return
     path = os.path.join(bta.path, self.__class__.__name__)
     bta.addFolder(name=path)
-    for path in self._objects.keys():
-      obj = self._objects[path]
-      bta.addObject(obj=obj, name=path, path=None, ext='.py')
+    extra_prefix = self.__class__.__name__ + '/'
+    for key in self._objects.keys():
+      obj = self._objects[key]
+      # BBB the prefix was put into each key in the previous implementation.
+      if not key.startswith(extra_prefix):
+        key = extra_prefix + key
+      bta.addObject(obj=obj, name=key, ext='.py')
 
   def _importFile(self, file_name, file):
     if not file_name.endswith('.py'):




More information about the Erp5-report mailing list