--- OSA_system2/OSAS_root.py 2005/03/03 20:41:00 1.5 +++ OSA_system2/OSAS_root.py 2005/03/07 19:33:42 1.6 @@ -21,7 +21,198 @@ import os.path import Globals from Globals import package_home from AccessControl import ClassSecurityInfo +import xmlrpclib +from xml.sax import make_parser +from xml.sax.handler import ContentHandler +import sys +class OSAS_add_contextData(Folder): + """Einfuegen eines Documentes in eine Collection""" + + security=ClassSecurityInfo() + + + meta_type='OSAS_addObjectToCollection' + + def XmlToTree(self,URL,pwstr=None): + """Collection XML to Tree""" + def spaces(depth): + + tmp="" + k=0 + while k<2*depth: + k+=1 + tmp=tmp+" "+" " + return tmp + + class requestHandler(ContentHandler): + def __init__(self): + self.depth=0 + self.retStr="" + + def startElement(self,name,attrs): + if name=="element": + self.depth+=1 + begin="" + end="" + if self.depth==1: + begin="" + end="" + + self.retStr+=spaces(self.depth)+"%s"%(attrs.get('url'),begin+urllib.unquote(attrs.get('name')))+end+"
\n" + + + + def endElement(self,name): + if name=="element": + self.depth-=1 + + if pwstr=="": + pwstr=None + + + + try: + if pwstr: + URL+="/getCollectionTreeXML?pwstr=%s"%pwstr + else: + URL+="/getCollectionTreeXML" + parser=make_parser() + curHandler=requestHandler() + parser.setContentHandler(curHandler) + + parser.parse(urllib.urlopen(URL)) + return curHandler.retStr.encode('utf-8') + + except: + zLOG.LOG('OSAS_Root (addFileToDollection)',zLOG.ERROR,'%s %s'%sys.exc_info()[:2]) + return URL + return urllib.urlopen(URL).read() + + + def __init__(self,id,collection): + self.id=id + self.collection=collection + + + + + def getPartners(self,URL): + """Zeige Partnerliste""" + class requestHandler(ContentHandler): + def __init__(self): + self.ret=[] + + def startElement(self,name,attrs): + if name=="partner": + self.ret.append((attrs.get('id'),attrs.get('title').encode('utf-8'))) + + + URL+="/getPartnersXML" + parser=make_parser() + curHandler=requestHandler() + parser.setContentHandler(curHandler) + parser.parse(urllib.urlopen(URL)) + try: + + return curHandler.ret + except: + return [("",URL)] + + + + def addContextData(self,path): + """Hinzufuegen zu einer Sammlung""" + + server=xmlrpclib.Server(self.serverUrl) + + + self.REQUEST.SESSION['images']=server.getImages(path) + + + self.REQUEST.SESSION['movies']=server.getMovies(path) + + + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','contextDataMain.zpt')).__of__(self) + return pt() + + index_html=addContextData + + def addContextData2(self,path,collection,thumb,streamingfile,rawfile,label,description,content_type,responsible,weight,credits=None): + """Hinzufuegen der Resource""" + splitted=path.split("/") + #print "BLU" + id=splitted[len(splitted)-1] + title=splitted[len(splitted)-1] + metalink=self.REQUEST['SERVER_URL']+path+"/index.meta" + + #link=TOBEDONE" + """Hinzufuegen der Ressource""" + + thumbUrl="http://einst3.mpiwg-berlin.mpg.de/"+path+thumb + link="rtsp://einst1.mpiwg-berlin.mpg.de/"+path+streamingfile + rawFile="file:///Volumes/einstein_movies/"+path+rawfile + + + params=urllib.urlencode({'id':id,'title':title,'link':link,'thumbUrl':thumbUrl,'rawFile':rawFile,'label':label,'description':description,'contentType':content_type,'responsible':responsible,'weight':weight,'credits':credits,'metalink':metalink}) + + #retStr=urllib.urlopen(collection+"/addMovie",params).read() + try: + server=xmlrpclib.Server(collection,allow_none=True) + retStr=server.addMovie(id,title,label,description,content_type,responsible,link,thumbUrl,rawFile,metalink,weight,credits) + except: + zLOG.LOG('OSAS_Root (addFileToDollection2)',zLOG.ERROR,'%s %s'%sys.exc_info()[:2]) + return "An Error occured adding the resource\n", collection,params + + #print "added" + if not retStr: + return "An Error occured adding the resource\n", collection,params + + #print collection+"/"+id+"/copyIndex_meta2echo_resource" + + urllib.urlopen(collection+"/"+id+"/copyIndex_meta2echo_resource").read() + #print "copy2res" + urllib.urlopen(collection+"/"+id+"/generate_label").read() + #print "label" + urllib.urlopen(collection+"/"+id+"/generate_title").read() + #print "title" + return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path) + + manage_options = Folder.manage_options+( + {'label':'Main Config','action':'add_contextData_config'}, + ) + + + def add_contextData_config(self): + """Main configuration""" + pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeAddContextData.zpt')).__of__(self) + return pt() + + + def change_OSAS_add_contextData(self,collection,pwstr=None,RESPONSE=None): + """Change""" + self.pwstr=pwstr + self.collection=collection + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + +def manage_AddOSAS_add_contextDataForm(self): + """interface for adding the OSAS_add_Metadata""" + pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','addContextData.zpt')).__of__(self) + return pt() + +def manage_AddOSAS_add_contextData(self,id,collection,RESPONSE=None): + """add the OSAS_root""" + newObj=OSAS_add_contextData(id,collection) + self.Destination()._setObject(id,newObj) + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + + + + class OSAS_handlerObject(Folder): """ @@ -56,12 +247,13 @@ class OSAS_handlerObject(Folder): pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeHandlerObjectForm.zpt')).__of__(self) return pt() - def changeHandlerObject(self,title,prefix,objectTypes,ignorePath=None,RESPONSE=None): + def changeHandlerObject(self,title,prefix,objectTypes="",ignorePath=None,newTarget="yes",RESPONSE=None): """Change RootFolderName""" self.title=title self.prefix=prefix self.ignorePath=ignorePath self.objectTypes=toList(objectTypes) + self.newTarget=newTarget if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -109,6 +301,14 @@ class OSAS_root(Folder,Implicit): OSASObjectTypes=OSAS_helpers.OSASObjectTypes + def generateMovieThumb(self,name): + """generate movie""" + server=xmlrpclib.Server(self.serverUrl) + name="/mpiwg/online"+name + print "bl",name,os.path.splitext(name)[0]+".gif" + ret=server.generateMovieThumb(name,os.path.splitext(name)[0]+".gif") + return ret + security.declareProtected("View management screens","getOSASObjectTypes") def getOSASObjectTypes(self): """return list of objecttypes"""