Diff for /OSA_system2/OSAS_root.py between versions 1.3 and 1.14

version 1.3, 2004/12/23 12:38:22 version 1.14, 2010/02/15 19:09:10
Line 16  from urlparse import * Line 16  from urlparse import *
 import re  import re
 import xml.dom.minidom  import xml.dom.minidom
 from types import *  from types import *
 import zLOG  import logging
   
   #ersetzt logging
   def logger(txt,method,txt2):
       """logging"""
       logging.info(txt+ txt2)
   
   
 import os.path  import os.path
 import Globals  import Globals
 from Globals import package_home  from Globals import package_home
 from AccessControl import ClassSecurityInfo  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+"&nbsp;"+"&nbsp;"
               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="<b>"
                           end="</b>"
                           
                       self.retStr+=spaces(self.depth)+"<input type='radio' name='collection' value='%s'>%s</input>"%(attrs.get('url'),begin+urllib.unquote(attrs.get('name')))+end+"<br>\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:
               logger('OSAS_Root (addFileToDollection)',logging.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,label,description,content_type,responsible,weight,thumb="",streamingfile="",rawfile="",lowresfile="",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"""
   
           gifPath=path.replace("/mpiwg/online/","")
           rawPath=path.replace("/mpiwg/online/permanent/einstein_exhibition/movies/","")
           lowresPath=path.replace("/mpiwg/online/permanent/einstein_exhibition/movies/","")
   
           thumbUrl="http://einst3.mpiwg-berlin.mpg.de/"+gifPath+"/"+thumb
           link="rtsp://einst1.mpiwg-berlin.mpg.de/"+gifPath+"/"+streamingfile
           rawFile="file:///Volumes/einstein_movies/"+rawPath+"/"+rawfile
           lowresFile="rtsp://einst1.mpiwg-berlin.mpg.de/"+gifPath+"/"+lowresfile
   
           
           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})
   
                   
           try:
               server=xmlrpclib.Server(collection,allow_none=True)
               retStr=server.addMovie(id,title,label,description,content_type,responsible,link,thumbUrl,rawFile,lowresFile,metalink,weight,credits)
           except:
               logger('OSAS_Root (addFileToDollection2)',logging.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']+'/browse?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):  class OSAS_handlerObject(Folder):
Line 38  class OSAS_handlerObject(Folder): Line 241  class OSAS_handlerObject(Folder):
          - `id` : Zope ID des Objektes           - `id` : Zope ID des Objektes
          - `title`: Titel des Objektes           - `title`: Titel des Objektes
          - `prefix` : URL bzw. URL Rumpf der Zusammen mit dem Pfad des Objectes die Anzeige URL ergibt           - `prefix` : URL bzw. URL Rumpf der Zusammen mit dem Pfad des Objectes die Anzeige URL ergibt
          - `objectType` : liste von Objekttypen die mittels dieses Handlers angezeigt werden können.           - `objectType` : liste von Objekttypen die mittels dieses Handlers angezeigt werden koennen.
          - `ignorePath` : Pfad der bei dem übergebenen Pfad element ingnoriert werden soll. Optional.           - `ignorePath` : Pfad der bei dem uebergebenen Pfad element ignoriert werden soll. Optional.
         """          """
         self.id=id          self.id=id
         self.title=title          self.title=title
Line 56  class OSAS_handlerObject(Folder): Line 259  class OSAS_handlerObject(Folder):
         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeHandlerObjectForm.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeHandlerObjectForm.zpt')).__of__(self)
         return pt()          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"""          """Change RootFolderName"""
         self.title=title          self.title=title
         self.prefix=prefix          self.prefix=prefix
         self.ignorePath=ignorePath          self.ignorePath=ignorePath
         self.objectTypes=toList(objectTypes)          self.objectTypes=toList(objectTypes)
           self.newTarget=newTarget
                   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 86  class OSAS_root(Folder,Implicit): Line 290  class OSAS_root(Folder,Implicit):
   
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
   
     def __init__(self,id,rootFolderName,uploadServletUrl=None):      def __init__(self,id,rootFolderName,serverUrl,uploadServletUrl=None):
         """initialize a new instance          """initialize a new instance
   
   
Line 99  class OSAS_root(Folder,Implicit): Line 303  class OSAS_root(Folder,Implicit):
         self.id = id          self.id = id
         self.rootFolderName = rootFolderName          self.rootFolderName = rootFolderName
         self.uploadServletUrl=uploadServletUrl          self.uploadServletUrl=uploadServletUrl
                   self.serverUrl=serverUrl
     meta_type="OSAS_Root__neu"      meta_type="OSAS_Root"
   
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Main Config','action':'changeRootForm'},          {'label':'Main Config','action':'changeRootForm'},
Line 109  class OSAS_root(Folder,Implicit): Line 313  class OSAS_root(Folder,Implicit):
   
     OSASObjectTypes=OSAS_helpers.OSASObjectTypes      OSASObjectTypes=OSAS_helpers.OSASObjectTypes
           
       def extendDict(self,dict1,dict2):
           """add two dicts"""
           ret=dict1
           for name in dict2.keys():
               ret[name]=dict2[name]
           return ret
       
           
       def generateMovieThumb(self,name):
           """generate movie"""
           server=xmlrpclib.Server(self.serverUrl)
           name="/mpiwg/online/permanent/einstein_exhibition/movies/"+name
   
           
           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"""
           return OSASObjectTypes
   
       def setProxy(self,name,value):
           """set proxy"""
           self.REQUEST.SESSION[name]=value
           return True
   
       def listToSingle(self,path):
           """list to single"""
           if type(path)==ListType:
               return path[0]
           else:
               return path
   
       def splitPath(self,path):
           """split path"""
           if type(path)==ListType:
               path=path[0]
           return os.path.split(path)
       
     def changeRootForm(self):      def changeRootForm(self):
         """Main configuration"""          """Main configuration"""
         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeRootForm.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeRootForm.zpt')).__of__(self)
                   
         return pt()          return pt()
   
     def changeRoot(self,rootFolderName,uploadServletUrl,RESPONSE=None):      def changeRoot(self,rootFolderName,uploadServletUrl,serverUrl,RESPONSE=None):
         """Change RootFolderName"""          """Change RootFolderName"""
         self.rootFolderName=rootFolderName          self.rootFolderName=rootFolderName
           self.serverUrl=serverUrl
         self.uploadServletUrl=uploadServletUrl          self.uploadServletUrl=uploadServletUrl
                   
         if RESPONSE is not None:          if RESPONSE is not None:
Line 181  class OSAS_root(Folder,Implicit): Line 425  class OSAS_root(Folder,Implicit):
                   
         dom=self.validateIndexMeta(xmlneu)          dom=self.validateIndexMeta(xmlneu)
         if not dom:          if not dom:
             zLOG.LOG('OSAS_Root (downloadExternalXML)',zLOG.ERROR,'cannot parse: %s', xml_url)              logger('OSAS_Root (downloadExternalXML)',logging.ERROR,'cannot parse: %s', xml_url)
             return "error"              return "error"
   
   
Line 233  def manage_addOSAS_rootForm(self): Line 477  def manage_addOSAS_rootForm(self):
     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addOSAS_rootForm.zpt')).__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addOSAS_rootForm.zpt')).__of__(self)
     return pt()      return pt()
   
 def manage_addOSAS_root(self,id,RootFolderName,uploadServletUrl,RESPONSE=None):  def manage_addOSAS_root(self,id,RootFolderName,uploadServletUrl,serverUrl,RESPONSE=None):
     """add the OSAS_root"""      """add the OSAS_root"""
     newObj=OSAS_root(id,RootFolderName,uploadServletUrl)      newObj=OSAS_root(id,RootFolderName,serverUrl,uploadServletUrl)
     self._setObject(id,newObj)      self._setObject(id,newObj)
     if RESPONSE is not None:      if RESPONSE is not None:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')

Removed from v.1.3  
changed lines
  Added in v.1.14


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>