provide separate method for reading individual document property settings
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@4112 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									de8e41db3e
								
							
						
					
					
						commit
						32a6449ce0
					
				
					 1 changed files with 20 additions and 6 deletions
				
			
		|  | @ -71,28 +71,42 @@ class OfficeFile(ExternalFileAdapter): | |||
|     externalAddress = property(ExternalFileAdapter.getExternalAddress, | ||||
|                                setExternalAddress) | ||||
| 
 | ||||
|     def processDocument(self): | ||||
|     @Lazy | ||||
|     def docFilename(self): | ||||
|         subDir = self.storageParams.get('subdirectory') | ||||
|         fn = self.storage.getDir(self.externalAddress, subDir) | ||||
|         # open ZIP file, process properties, set version property in file | ||||
|         return self.storage.getDir(self.externalAddress, subDir) | ||||
| 
 | ||||
|     @Lazy | ||||
|     def docPropertyDom(self): | ||||
|         fn = self.docFilename | ||||
|         try: | ||||
|             zf = ZipFile(fn, 'r') | ||||
|         except IOError, e: | ||||
|             from logging import getLogger | ||||
|             self.logger.warn(e) | ||||
|             return | ||||
|         #print '***', zf.namelist() | ||||
|         if self.propFileName not in zf.namelist(): | ||||
|             self.logger.warn('Custom properties not found in file %s.' % | ||||
|                              self.externalAddress) | ||||
|         propsXml = zf.read(self.propFileName) | ||||
|         dom = etree.fromstring(propsXml) | ||||
|         zf.close() | ||||
|         return etree.fromstring(propsXml) | ||||
| 
 | ||||
|     def getDocProperty(self, pname): | ||||
|         for p in self.docPropertyDom: | ||||
|             name = p.attrib.get('name') | ||||
|             if name == pname: | ||||
|                 return p[0].text | ||||
|         return None | ||||
| 
 | ||||
|     def processDocument(self): | ||||
|         changed = False | ||||
|         docVersion = None | ||||
|         version = IVersionable(self.context).versionId | ||||
|         strType = ('{http://schemas.openxmlformats.org/' | ||||
|                    'officeDocument/2006/docPropsVTypes}lpwstr') | ||||
|         attributes = {} | ||||
|         dom = self.docPropertyDom | ||||
|         for p in dom: | ||||
|             name = p.attrib.get('name') | ||||
|             value = p[0].text | ||||
|  | @ -107,7 +121,7 @@ class OfficeFile(ExternalFileAdapter): | |||
|                     changed = True | ||||
|             elif attr is not None: | ||||
|                 attributes[attr] = value | ||||
|         zf.close() | ||||
|         fn = self.docFilename | ||||
|         if changed: | ||||
|             newFn = fn + '.new' | ||||
|             zf = ZipFile(fn, 'r') | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm