version 1.8, 2005/02/10 19:50:18
|
version 1.13, 2005/02/11 20:06:57
|
Line 15 import stat
|
Line 15 import stat
|
import xml.dom.minidom |
import xml.dom.minidom |
from types import * |
from types import * |
import xmlrpclib |
import xmlrpclib |
|
from OSAS_helpers import * |
|
|
|
|
class OSAS_storeOnline(SimpleItem): |
class OSAS_storeOnline(SimpleItem): |
Line 28 class OSAS_storeOnline(SimpleItem):
|
Line 28 class OSAS_storeOnline(SimpleItem):
|
|
|
_v_fileSystem={} #chache fuer filesystem |
_v_fileSystem={} #chache fuer filesystem |
_v_metaFiles={} #chache fuer indexMeta |
_v_metaFiles={} #chache fuer indexMeta |
|
def getMetaFile(self,path): |
|
"""get index.meta and translate it to HTML""" |
|
"""Lies Metafile ein |
|
@param path: Pfad des index.met |
|
@return: index.meta file |
|
""" |
|
html=[] |
|
server=xmlrpclib.Server(self.serverUrl) |
|
|
|
|
|
f=server.getFile(path+"/index.meta") |
|
|
def __init__(self,id,serverUrl): |
if not f: |
"""initialize a new instance |
|
@param id: Zope id""" |
|
self.id = id |
|
self.serverUrl = serverUrl |
|
|
|
|
return self.getMetaInfoFromIndexMeta(path) |
|
#return "NO_METADATA" |
|
else: |
|
|
security.declareProtected('View','index_html') |
dom = xml.dom.minidom.parseString(f) |
def index_html(self): |
|
"""main view either standard template zpt/storeOnline_index_html.zpt or storeOnline_index.html in tree""" |
try: |
if hasattr(self,'storeOnline_index.html'): |
name=getText(dom.getElementsByTagName("name")[0].childNodes) |
return getattr(self,'storeOnline_index.html')() |
except: |
|
name="NOT_DEFINED!!!" |
|
try: |
|
creator=getText(dom.getElementsByTagName("creator")[0].childNodes) |
|
except: |
|
creator="NOT_DEFINED!!!" |
|
|
|
try: |
|
creation_date=getText(dom.getElementsByTagName("archive-creation-date")[0].childNodes) |
|
except: |
|
creation_date="NOT_DEFINED!!!" |
|
|
|
try: |
|
description=getText(dom.getElementsByTagName("description")[0].childNodes) |
|
except: |
|
description="NOT_DEFINED!!!" |
|
|
|
try: |
|
type=getText(dom.getElementsByTagName("content-type")[0].childNodes) |
|
except: |
|
type="" |
|
if type=="scanned document": |
|
html="<h3>Document: "+name+"</h3>" |
|
elif type=="folder": |
|
html="<h3>Folder: "+name+"</h3>" |
else: |
else: |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','storeOnline_index_html.zpt')).__of__(self) |
html="<h3>Document: "+name+"</h3>" |
return pt() |
|
|
|
|
html=html+"<p><i>created by: "+creator+" at: "+creation_date+"</i></p>" |
|
html=html+"<h4>Description</h4><p>"+description+"</p>" |
|
try: |
|
bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0] |
|
if bib.attributes.has_key('type'): |
|
html=html+"<h4>Info ("+bib.attributes['type'].value+")</h4>" |
|
else: |
|
html=html+"<h4>Info</h4>" |
|
html=html+getBib(bib.childNodes) |
|
|
def findIndexMeta(self,path=""): |
except: |
"""finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file |
"""none""" |
@keyword path: default ist "", Pfad auf das Object relativ zum rootFolderName |
|
@return: None falls kein index.meta existiert sonst Pfad auf das index.meta |
# html=html.encode('utf-8','replace')+getBib(bib.childNodes).encode('utf-8','replace') |
|
|
|
return html |
|
|
|
|
|
def getMetaInfoFromIndexMeta(self,path): |
|
"""metadaten zu path als html aus dem index.meta file zu path (meta tag im file bzw. dir container) |
|
@param path: Pfad auf das Object relativ zum rootFolderName |
|
@return: metadata als html |
""" |
""" |
realPath=os.path.normpath(os.path.join(self.rootFolderName,path)) |
xmlInfos=self.findEntryInIndexMeta(path) |
#suche index.meta |
if xmlInfos: |
|
return OSAS_helpers.getMetaInfoFromXML(path,xmlInfos) |
|
else: |
|
return "" |
|
|
|
def findEntryInIndexMeta(self,path): |
|
"""Finde im naechstgelegenden index.meta relativ zu path den entprechenden Eintrag fuer diesen Pfad. |
|
@param path: Pfad auf das Object relativ zum rootFolderName |
|
@return: den Teil von Index.meta der Informationen zu path enthaelt, None wenn error. |
|
""" |
|
|
server=xmlrpclib.Server(self.serverUrl) |
server=xmlrpclib.Server(self.serverUrl) |
return server.findIndexMeta(realPath) |
indexMeta=server.findIndexMeta(path) # suche index.meta |
|
|
|
if not indexMeta: |
|
return None |
|
|
|
realPath=os.path.split(indexMeta)[0] |
|
path=os.path.normpath(path) |
|
|
|
try: |
|
|
|
dom=xml.dom.minidom.parseString(server.getFile(indexMeta)) |
|
except: |
|
zLOG.LOG("OSAS_browser (findEntryInIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta) |
|
#ist path ein directory? |
|
dirs=dom.getElementsByTagName('dir') |
|
for dir in dirs: |
|
pathes=dir.getElementsByTagName('path') |
|
if pathes: |
|
pathX=OSAS_helpers.getText(pathes[0].childNodes) |
|
else: |
|
pathX="" |
|
names=dir.getElementsByTagName('name') |
|
if names: |
|
name=OSAS_helpers.getText(names[0].childNodes) |
|
else: |
|
name="" |
|
|
|
checkpath=os.path.normpath(os.path.join(realPath,pathX,name)) |
|
if checkpath==path: |
|
|
|
return dir.toxml() |
|
|
|
#ist path ein file? |
|
files=dom.getElementsByTagName('file') |
|
for dir in dirs: |
|
pathes=dir.getElementsByTagName('path') |
|
if pathes: |
|
pathX=OSAS_helpers.getText(pathes[0].childNodes) |
|
else: |
|
pathX="" |
|
names=dir.getElementsByTagName('name') |
|
if names: |
|
name=OSAS_helpers.getText(names[0].childNodes) |
|
else: |
|
name="" |
|
|
|
checkpath=os.path.normpath(os.path.join(realPath,pathX,name)) |
|
if checkpath==path: |
|
|
|
return dir.toxml() |
|
|
|
|
|
return None |
|
|
|
|
def getSubDirsFromIndexMeta(self,path): |
def getSubDirsFromIndexMeta(self,path): |
Line 88 class OSAS_storeOnline(SimpleItem):
|
Line 196 class OSAS_storeOnline(SimpleItem):
|
return self._v_metaFiles[path][1] |
return self._v_metaFiles[path][1] |
|
|
try: |
try: |
dom=xml.dom.minidom.parse(indexMeta) |
dom=xml.dom.minidom.parseString(server.getFile(indexMeta)) |
except: |
except: |
zLOG.LOG("OSAS_browser (getSubDirsFromIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta) |
zLOG.LOG("OSAS_browser (getSubDirsFromIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta) |
|
return ret |
|
|
dirs=[] |
dirs=[] |
dirs=dom.getElementsByTagName('dir')+dom.getElementsByTagName('file') |
dirs=dom.getElementsByTagName('dir')+dom.getElementsByTagName('file') |
Line 116 class OSAS_storeOnline(SimpleItem):
|
Line 224 class OSAS_storeOnline(SimpleItem):
|
fileType="OSAS_file_archive" |
fileType="OSAS_file_archive" |
|
|
object=os.path.join(realPath,pathX,name) |
object=os.path.join(realPath,pathX,name) |
ret[object]=(fileType,'') |
ret[object.encode('utf-8')]=(fileType,'') |
|
|
self._v_metaFiles[path]=(stats[stat.ST_MTIME],ret) # speicher im chache |
self._v_metaFiles[path]=(stats[stat.ST_MTIME],ret) # speicher im chache |
|
|
return ret |
return ret |
|
|
|
|
|
|
|
def __init__(self,id,serverUrl): |
|
"""initialize a new instance |
|
@param id: Zope id""" |
|
self.id = id |
|
self.serverUrl = serverUrl |
|
|
|
|
|
security.declareProtected('View','index_html') |
|
def index_html(self): |
|
"""main view either standard template zpt/storeOnline_index_html.zpt or storeOnline_index.html in tree""" |
|
if hasattr(self,'storeOnline_index.html'): |
|
return getattr(self,'storeOnline_index.html')() |
|
else: |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','storeOnline_index_html.zpt')).__of__(self) |
|
return pt() |
|
|
|
|
|
def findIndexMeta(self,path=""): |
|
"""finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file |
|
@keyword path: default ist "", Pfad auf das Object relativ zum rootFolderName |
|
@return: None falls kein index.meta existiert sonst Pfad auf das index.meta |
|
""" |
|
realPath=os.path.normpath(os.path.join(self.rootFolderName,path)) |
|
#suche index.meta |
|
server=xmlrpclib.Server(self.serverUrl) |
|
return server.findIndexMeta(realPath) |
|
|
|
|
|
|
|
|
|
|
|
|
def readObjectsFromPath(self,path="",metaDataId=None): |
def readObjectsFromPath(self,path="",metaDataId=None): |
"""Liest files aus dem path und speichert im cache _v_filesystem. |
"""Liest files aus dem path und speichert im cache _v_filesystem. |
Line 164 class OSAS_storeOnline(SimpleItem):
|
Line 304 class OSAS_storeOnline(SimpleItem):
|
|
|
return self._v_fileSystem[realPath][1] |
return self._v_fileSystem[realPath][1] |
|
|
dir=server.listdir(realPath) |
indexMetas=server.getAllIndexMetasOfSubDirs(realPath) |
|
dir=indexMetas.keys() |
|
|
ret={} |
ret={} |
for filename in dir: |
for filename in dir: |
object=os.path.join(realPath,filename) |
object=os.path.join(realPath,filename) |
fileType=OSAS_helpers.checkOSASFileType(object) |
fileType=indexMetas[filename][0] |
|
|
if fileType: |
if fileType: |
|
if (fileType=='OSAS_dir') and indexMetas.has_key("."): |
|
if(OSAS_helpers.isImageFolder(object,indexMetas["."][1])): |
|
fileType='OSAS_imageFolder' |
|
|
if metaData: |
if metaData: |
|
|
ret[object]=(fileType,metaData.getDisplayFieldsAsStr(object)) |
ret[object]=(fileType,metaData.getDisplayFieldsAsStr(indexMetas[filename][1])) |
else: |
else: |
ret[object]=(fileType,'') |
ret[object]=(fileType,'') |
|
|
Line 214 class OSAS_storeOnline(SimpleItem):
|
Line 360 class OSAS_storeOnline(SimpleItem):
|
objects=self.readObjectsFromPath(path) |
objects=self.readObjectsFromPath(path) |
if not objects: |
if not objects: |
objects={} |
objects={} |
|
|
|
|
im=self.getSubDirsFromIndexMeta(path) |
im=self.getSubDirsFromIndexMeta(path) |
for key in im.keys(): |
for key in im.keys(): |
#virtuelle pfade hinzufuegen |
#virtuelle pfade hinzufuegen |
Line 279 class OSAS_storeOnline(SimpleItem):
|
Line 427 class OSAS_storeOnline(SimpleItem):
|
i=i-1 |
i=i-1 |
return string |
return string |
|
|
def getMetaFile(self,path): |
|
"""Lies Metafile ein |
|
@param path: Pfad des index.met |
|
@return: index.meta file |
|
""" |
|
server=xmlrpclib.Server(self.serverUrl) |
|
tmp=server.getMetaFile(path) |
|
#zLOG.LOG("EE",zLOG.INFO,type(tmp)) |
|
|
|
return tmp |
|
|
|
InitializeClass(OSAS_storeOnline) |
InitializeClass(OSAS_storeOnline) |
|
|