[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