version 1.1, 2005/02/10 19:50:18
|
version 1.2, 2005/02/10 20:23:24
|
Line 11 from OSAS_helpers import *
|
Line 11 from OSAS_helpers import *
|
class OSAS_storeOnlineServer(SimpleItem): |
class OSAS_storeOnlineServer(SimpleItem): |
"""Server for store Online system""" |
"""Server for store Online system""" |
|
|
|
_v_metaFiles={} #chache fuer indexMeta |
meta_type="OSAS_server" |
meta_type="OSAS_server" |
|
def getSubDirsFromIndexMeta(self,path): |
|
|
|
"""Gebe alle path untergeordenten Objekte aus |
|
@param path: optional, default ist "", Pfad auf das Object relativ zum rootFolderName |
|
@return: Directory [pfad auf das Objekt]->(fileType,''), fileType ist hierbei OSAS_dir_archive falls Object ein directory und OSAS_file_archive falls das Object ein File ist,der zweite Eintrag des Tupels ist zur Zeit immer '', spaeter wird hier die Beschreibung gemaess Metadaten stehen, wie bei readObjectsFromPath. |
|
@todo: Rueckgabe einer Beschreibung gemaess Metadaten |
|
""" |
|
ret={} |
|
#server=xmlrpclib.Server(self.serverUrl) |
|
indexMeta,stats=self.findIndexMetaWithStats(path)#findex index.meta zu path. |
|
|
|
if not indexMeta: |
|
return ret |
|
|
|
realPath=os.path.split(indexMeta)[0] |
|
path=path.replace(realPath,"") |
|
if path and (path[0]==os.sep): #falls am Anfang os.sep steht lösche dieses. |
|
path=path[1:] |
|
|
|
|
|
|
|
#teste ob schon im cache |
|
|
|
if self._v_metaFiles.has_key(path) and (self._v_metaFiles[path][0]==stats[stat.ST_MTIME]): |
|
return self._v_metaFiles[path][1] |
|
|
|
try: |
|
dom=xml.dom.minidom.parse(indexMeta) |
|
except: |
|
zLOG.LOG("OSAS_browser (getSubDirsFromIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta) |
|
return ret |
|
|
|
dirs=[] |
|
dirs=dom.getElementsByTagName('dir')+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="" |
|
|
|
#print "PP",pathX,path |
|
if pathX==path: |
|
if dir.tagName=="dir": |
|
fileType="OSAS_dir_archive" |
|
else: |
|
fileType="OSAS_file_archive" |
|
|
|
object=os.path.join(realPath,pathX,name) |
|
ret[object.encode('utf-8')]=(fileType,'') |
|
|
|
self._v_metaFiles[path]=(stats[stat.ST_MTIME],ret) # speicher im chache |
|
|
|
return ret |
|
|
|
|
|
|
def findIndexMeta(self,realPath=""): |
def findIndexMeta(self,realPath=""): |
"""finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file |
"""finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file |