import os
import os.path
import stat
import OSAS_helpers
import xmlrpclib
import bz2
import base64
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Globals import InitializeClass,package_home
from OFS.SimpleItem import SimpleItem
import zLOG
def encodeRPC(string):
return base64.encodestring(bz2.compress(string))
class OSAS_storeOnlineServer(SimpleItem):
"""Server for store Online system"""
meta_type="OSAS_server"
def getImages(self,path):
"""hack"""
imageEnding=['.gif','.jpg','.jpeg','.png','.tiff','.tif']
dirs=os.listdir(path)
ret=[]
for dir in dirs:
if os.path.isdir(os.path.join(path,dir)):
for subdir in os.listdir(os.path.join(path,dir)):
if os.path.splitext(subdir)[1].lower() in imageEnding:
ret.append(os.path.join(dir,subdir))
else:
if os.path.splitext(dir)[1] in imageEnding:
ret.append(os.path.join(dir))
return ret
def getMovies(self,path):
"""hack"""
movieEnding=['.dv','.mov','.mp4']
dirs=os.listdir(path)
ret=[]
for dir in dirs:
if os.path.isdir(os.path.join(path,dir)):
for subdir in os.listdir(os.path.join(path,dir)):
if os.path.splitext(subdir)[1].lower() in movieEnding:
ret.append(os.path.join(dir,subdir))
else:
if os.path.splitext(dir)[1] in movieEnding:
ret.append(os.path.join(dir))
return ret
def findIndexMeta(self,realPath=""):
"""finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
@keyword path: default ist "", Pfad auf das Object
@return: None falls kein index.meta existiert sonst Pfad auf das index.meta
"""
#suche index.meta
while (not os.path.exists(os.path.join(realPath,'index.meta'))) and (not ((realPath=="") or (realPath=="/"))):
realPath=os.path.split(realPath)[0]
if realPath=='' or realPath=='/':
if os.path.exists(os.path.join(realPath,'index.meta')):
return (os.path.join(realPath,'index.meta'))
else:
return None
else:
return os.path.join(realPath,'index.meta')
def findIndexMetaWithStats(self,path=""):
"""finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
@keyword path: default ist "", Pfad auf das Object
@return: None falls kein index.meta existiert sonst Tupel (Pfad auf das index.meta,stats(indexMeta)
"""
indexMeta=self.findIndexMeta(path)
if indexMeta:
return (indexMeta,self.getStat(indexMeta))
else:
return (None,[])
def getStat(self,path=""):
"""Gibt stat von path aus
@keyword path: default ist "", Pfad
@return: stat[path]"""
if not os.path.exists(path):
#return None,"(ERROR) path %s does not exist."%path
return None
else:
return [x for x in os.stat(path)]
def listdir(self,path=""):
"""list dir"""
return os.listdir(path)
def isdir(self,path=""):
"""list dir"""
return os.path.isdir(path)
def isfile(self,path=""):
"""list dir"""
return os.path.isfile(path)
def getFile(self,path):
"""getFile"""
if not os.path.exists(path):
return None
f=file(path,'r')
ret=f.read()
f.close()
return ret
def getAllIndexMetasOfSubDirs(self,path):
"""get all index Metas"""
ret={}
if os.path.exists(path+"/index.meta"):
compressed=encodeRPC(file(path+"/index.meta","r").read())
ret["."]=('OSAS_dir',compressed)
for dir in os.listdir(path):
fileType=OSAS_helpers.checkOSASFileType(os.path.join(path,dir))
if os.path.exists(os.path.join(path,dir,"index.meta")):
compressed=encodeRPC(file(os.path.join(path,dir,"index.meta"),"r").read())
ret[dir]=('OSAS_dir',compressed)
else:
ret[dir]=(fileType,None)
return ret
def writeMetaDataFile(self,path,metadata):
"""writefiletoserver"""
try:
fh=file(path,"w")
fh.write(metadata)
fh.close
return True
except:
return False
def generateMovieThumb(self,input,output):
"""generate Movie"""
zLOG.LOG("SERVER",zLOG.INFO,"/usr/local/bin/thumbbite.pl %s %s"%(input,output))
ret=os.popen("/usr/local/bin/thumbbite.pl %s %s"%(input,output))
zLOG.LOG("SERVER",zLOG.INFO,ret)
return "ok"
def manage_addOSAS_storeOnlineServerForm(self):
"""interface for adding the OSAS_storeOnline"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addStoreOnlineServer.zpt')).__of__(self)
return pt()
def manage_addOSAS_storeOnlineServer(self,id,RESPONSE=None):
"""add the OSAS_storeOnline
@param id: id
"""
newObj=OSAS_storeOnlineServer(id)
self._setObject(id,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>