Diff for /ECHO_content/ECHO_collection.py between versions 1.254 and 1.267

version 1.254, 2005/11/23 15:50:36 version 1.267, 2006/03/03 22:05:31
Line 15  try: Line 15  try:
 except:  except:
         print "PDF generation will not work"          print "PDF generation will not work"
             
   import urlparse
 import string  import string
 import tempfile  import tempfile
 import re  import re
Line 38  from Products.PageTemplates.ZopePageTemp Line 38  from Products.PageTemplates.ZopePageTemp
 from Globals import Persistent, package_home  from Globals import Persistent, package_home
 from Acquisition import Implicit  from Acquisition import Implicit
 from Products.ZCatalog.CatalogPathAwareness import CatalogAware  from Products.ZCatalog.CatalogPathAwareness import CatalogAware
   from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon
   
 import urllib  import urllib
 import cgi  import cgi
Line 50  from Ft.Xml import EMPTY_NAMESPACE Line 51  from Ft.Xml import EMPTY_NAMESPACE
 import Ft.Xml.XPath  import Ft.Xml.XPath
 import cStringIO  import cStringIO
 import zLOG  import zLOG
   import sys
   
 try:  try:
         from psycopg import libpq          from psycopg import libpq
Line 68  from ECHO_helpers import * Line 70  from ECHO_helpers import *
 from ECHO_language import *  from ECHO_language import *
 from ECHO_movie import *  from ECHO_movie import *
 import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen  import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen
   import xmlrpclib
                           
   
 def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""):  def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""):
Line 83  def setECHO_collectionInformation(self,t Line 85  def setECHO_collectionInformation(self,t
         self.credits=toList(credits)          self.credits=toList(credits)
         self.weight=weight          self.weight=weight
   
   class ECHO_partner(Image,Persistent,ECHO_basis):
       """ECHO Partner"""
   
       meta_type="ECHO_partner"
   
       def __init__(self, id, title,url, file, copyrightType, person, email, country, color, content_type='', precondition=''):
           self.__name__=id
           self.title=title
           self.url=url
           self.person=person
           self.email=email
           self.country=country
           self.color=color
           self.precondition=precondition
           self.copyrightType=copyrightType
           data, size = self._read_data(file)
           content_type=self._get_content_type(file, data, id, content_type)
           self.update_data(data, content_type, size)
   
       manage_options = Image.manage_options+(
           {'label':'Partner Information','action':'ECHO_partner_config'},
           )
   
       
       def changeECHO_partner(self,url,copyrightType,person, email, country, color, RESPONSE=None):
           """Change main information"""
           self.url=url
           self.person=person
           self.email=email
           self.country=country
           self.color=color
           self.copyrightType=copyrightType
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
               
               
   
       def ECHO_partner_config(self):
           """Main configuration"""
           if not hasattr(self,'url'):
               self.url=""
           pt=zptFile(self, 'zpt/ChangeECHO_partner.zpt')
           return pt()
   
           
   manage_addECHO_partnerForm=DTMLFile('dtml/ECHO_partnerAdd',globals(),
                                Kind='ECHO_partner',kind='ECHO_partner')
   
   
   
   def manage_addECHO_partner(self, id, url, person, email, country, color, file=None, copyrightType='', title='', precondition='', content_type='',
                       REQUEST=None):
       """
       Add a new ECHO_partner object.
   
       Creates a new ECHO_partner object 'id' with the contents of 'file'.
       Based on Image.manage_addImage
       """
   
       id=str(id)
       title=str(title)
       content_type=str(content_type)
       precondition=str(precondition)
   
       id, title = OFS.Image.cookId(id, title, file)
   
       self=self.this()
   
       # First, we create the image without data:
       self._setObject(id, ECHO_partner(id,title,url,'',copyrightType, person, email, country, color, content_type, precondition))
   
       # Now we "upload" the data.  By doing this in two steps, we
       # can use a database trick to make the upload more efficient.
       if file:
           self._getOb(id).manage_upload(file)
       if content_type:
           self._getOb(id).content_type=content_type
   
       if REQUEST is not None:
           try:    url=self.DestinationURL()
           except: url=REQUEST['URL1']
           REQUEST.RESPONSE.redirect('%s/manage_main' % url)
       return id
   
 class ECHO_locale(ZopePageTemplate):  class ECHO_locale(ZopePageTemplate):
         """localisierung"""          """localisierung"""
   
Line 257  class ECHO_fullText(ZopePageTemplate,ECH Line 343  class ECHO_fullText(ZopePageTemplate,ECH
         def getPage(self,nr='1'):          def getPage(self,nr='1'):
                 """get page n"""                  """get page n"""
                 #return self().encode('latin-1','ignore')                  #return self().encode('latin-1','ignore')
                 dom=xml.dom.minidom.parseString(self().encode('utf-8','ignore'))                  dom=xml.dom.minidom.parseString(self())
                 pages=dom.getElementsByTagName('page')                  pages=dom.getElementsByTagName('page')
                                   
                 return pages[int(nr)-1].toxml()                  return pages[int(nr)-1].toxml()
Line 314  class ECHO_resource(CatalogAware,Folder, Line 400  class ECHO_resource(CatalogAware,Folder,
   
     def reindex(self):      def reindex(self):
         """generate fields for indexing and reindex"""          """generate fields for indexing and reindex"""
         import urlparse          
         #TODO: korrigieren des metalink pfades konfigurierbar machen          #TODO: korrigieren des metalink pfades konfigurierbar machen
         splitted= [x for x in urlparse.urlparse(self.metalink)]          splitted= [x for x in urlparse.urlparse(self.metalink)]
         splitted[1]="foxridge.mpiwg-berlin.mpg.de"[0:]          splitted[1]="foxridge.mpiwg-berlin.mpg.de"[0:]
Line 427  class ECHO_resource(CatalogAware,Folder, Line 513  class ECHO_resource(CatalogAware,Folder,
             return ret+self.createSubElementRDF(urn=urn)               return ret+self.createSubElementRDF(urn=urn) 
   
       
     def getAccessRightSelectorHTML(self,outlook="select"):      def changeAccessRightForm(self,preselect=None):
             """htmlselector"""          """change the access rights"""
             values=['free','mpiwg']  
                           
             if outlook=="select":          pt=zptFile(self, 'zpt/ChangeECHO_resourceAccessRight.zpt')
                     ret="""<select name="%s">"""%self.getId()          return pt(preselect=preselect)
       
       def changeAccessRight(self):
           """changeRights"""
           argv=self.REQUEST.form
           self.setAccessRightXML(argv["%s_xml"%self.getId()])
           self.accessRight=argv["%s_echo"%self.getId()]
            
           self.REQUEST.RESPONSE.redirect('manage_main')
           
       
       def getAccessRightSelectorHTML(self,outlook="select",xmldominant=None,preselect=None):
               """htmlselector, xmldominant= in der regel wird der wert des xmlfiles ausgegeben ausser er existiert nicht"""
               values=['','free','MPIWG']
               
               if preselect:#set all to the preselected
                   ar=(preselect,preselect)
               else:#else set to actual value
                   ar=self.getAccessRightMD()
   
               if outlook=="select":
                       ret="""<select name="%s_xml">"""%self.getId()
                       ret1="""<select name="%s_echo">"""%self.getId()
                     for value in values:                      for value in values:
                             if value==self.getAccessRightMD():                              if value==ar[0]:
                                     ret+="<option selected>%s</option>"%value                                      ret+="<option selected>%s</option>"%value
                             else:                              else:
                                     ret+="<option>%s</option>"%value                                      ret+="<option>%s</option>"%value
                               
                               if value==ar[1]:
                                       ret1+="<option selected>%s</option>"%value
                               else:
                                       ret1+="<option>%s</option>"%value
                       
                       
                       if not xmldominant:
                           return ret+"</select>",ret1+"</select>"
                       else:
                           if ar[0] is not None:
                     return ret+"</select>"                      return ret+"</select>"
                           else:
                               return "<p>No xml file (only local selection):"+ret1
   
             else:              else:
                     ret=""                      ret=""
                       ret1=""
                     for value in values:                      for value in values:
                                                           
                             if value==self.getAccessRightMD():                              if value==ar[0]:
                                     ret+="""<input type="radio" name="%s" value="%s" checked>%s"""%(self.getId(),value,value)                                      ret+="""<input type="radio" name="%s_xml" value="%s" checked>%s"""%(self.getId(),value,value)
                               else:
                                       ret+="""<input type="radio" name="%s_xml" value="%s">%s"""%(self.getId(),value,value)
                                       
                               if value==ar[1]:
                                       ret1+="""<input type="radio" name="%s_echo" value="%s" checked>%s"""%(self.getId(),value,value)
                               else:
                                       ret1+="""<input type="radio" name="%s_echo" value="%s">%s"""%(self.getId(),value,value)
   
                       if not xmldominant:                        
                           return ret,ret1
                             else:                              else:
                                     ret+="""<input type="radio" name="%s" value="%s">%s"""%(self.getId(),value,value)                          if ar[0]:
                     return ret                      return ret
                           else:
                               return "<p>No xml file (only local selection)</p>"+ret1
   
   
   
       def copyAccessRightsFromMD(self):
               """kopiere rechte aus den metadaten"""
               self.accessRight=self.getAccessRightMD()[0]
               
               
   
   
           
Line 458  class ECHO_resource(CatalogAware,Folder, Line 598  class ECHO_resource(CatalogAware,Folder,
                 url=self.metalink                  url=self.metalink
   
                 try:                  try:
                         geturl=""                      urllib.urlopen(url)
                         for line in ECHO_helpers.urlopen(url).readlines():                  except:
                                 geturl=geturl+line                      zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
   
                       return None,getattr(self,'accessRight','')
   
                 except:  
                         return (None,"Cannot open: "+url)  
   
                 try:                  try:
                         dom=xml.dom.minidom.parseString(geturl)                          dom = NonvalidatingReader.parseUri(url)
                         root=dom.getElementsByTagName('resource')[0]  
                 except:                  except:
                         return (None,"Cannot parse: "+url+"<br>"+geturl)                          zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
                           return (None,"Cannot parse: "+url+"<br>"+"%s (%s)"%sys.exc_info()[0:2])
   
                 internal=dom.getElementsByTagName('internal')  
                 if internal:  
                         institution=dom.getElementsByTagName('institution')  
                         return getText(institution[0].childNodes)  
                   
                 free=dom.getElementsByTagName('free')  
                 if free:  
                         return "free"  
   
                 return "free" #default free                  accessright=dom.xpath("//meta/access-conditions/access/@type")
                   if accessright:
                       accessright=accessright[0].value
                   if str(accessright)=='institution':
                       tmp=dom.xpath("//meta/access-conditions/access/name")
                       if tmp:
                           accessright=getTextFromNode(tmp[0])
   
     def changeAccessRightMD(self,accessright,RESPONSE=None):                  if not accessright:
             """change the rights"""                      accessright=""
                           
                   return accessright,getattr(self,'accessRight','')             
   
       def changeAccessRightMD(self,accessright,RESPONSE=None):
               """change the rights - not user anymore"""
               #TODO: check if method still needed
             params="accessright=%s"%accessright              params="accessright=%s"%accessright
   
   
             #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()              #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
   
                           
             ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()              ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()
   
                       
             if RESPONSE is not None:              if RESPONSE is not None:
Line 502  class ECHO_resource(CatalogAware,Folder, Line 644  class ECHO_resource(CatalogAware,Folder,
     def setAccessRightXML(self,accessright):      def setAccessRightXML(self,accessright):
                 """set accessright"""                  """set accessright"""
                 url=self.metalink                  url=self.metalink
                   accessrights=['MPIWG','free']#allowes rights
                   
                   if accessright =='':
                       """do nothing"""
                       return ""
                       
   
                 try:                  try:
                         geturl=""                          geturl=""
Line 518  class ECHO_resource(CatalogAware,Folder, Line 666  class ECHO_resource(CatalogAware,Folder,
                 except:                  except:
                         return (None,"Cannot parse: "+url+"<br>"+geturl)                          return (None,"Cannot parse: "+url+"<br>"+geturl)
   
                 metanodes=dom.getElementsByTagName('access-conditions')                  metamains=dom.getElementsByTagName('meta')
                   
                   if not metamains:
                           nodenew=dom.createElement('meta')
                           root.appendChild(nodenew)
                           metamain=nodenew
                   else:
                           metamain=metamains[0]
                   
                   
                   metanodes=metamain.getElementsByTagName('access-conditions')
   
                 if not metanodes:                  if not metanodes:
                         nodenew=dom.createElement('access-conditions')                          nodenew=dom.createElement('access-conditions')
                         root.appendChild(nodenew)                          metamain.appendChild(nodenew)
                         metanode=nodenew                          metanode=nodenew
                 else:                  else:
                         metanode=metanodes[0]                          metanode=metanodes[0]
   
                 accesses=metanode.getElementsByTagName('access')                  accesses=metanode.getElementsByTagName('access')
   
                 if not accesses:                  #delete old
                   if accesses:
                        metanode.removeChild(accesses[0]).unlink()
   
                   #create new
                       
                         nodenew2=dom.createElement('access')                          nodenew2=dom.createElement('access')
                         metanode.appendChild(nodenew2)                          metanode.appendChild(nodenew2)
                         metanode2=nodenew2                          metanode2=nodenew2
                 else:  
                         metanode2=accesses[0]  
   
                 internal=metanode.getElementsByTagName('internal')                  attribute=metanode2.getAttribute('type')
   
                 if internal:                  if accessright=="free":
                         metanode2.removeChild(internal[0]).unlink()  
   
                 free=metanode.getElementsByTagName('free')                       metanode2.setAttribute('type','free')
                                   
                 if free:                  elif accessright.upper()=='MPIWG':
                         metanode2.removeChild(internal[0]).unlink()                          metanode2.setAttribute('type','institution')
                           nodenew4=dom.createElement('name')
                           metanodetext=dom.createTextNode('MPIWG')
                           nodenew4.appendChild(metanodetext)
                           nodenew2.appendChild(nodenew4)
                   #print dom.toxml().encode('utf-8')
                   string= encodeRPC(dom.toxml().encode('utf-8'))
   
                   #TODO: make server configurable
                   server=xmlrpclib.Server("http://foxridge.mpiwg-berlin.mpg.de/server")
   
                 if accessright=='free':                  path=urlparse.urlparse(self.metalink)[2]
                         nodenew3=dom.createElement('free')  
                         metanode2.appendChild(nodenew3)  
                 elif accessright=='mpiwg':  
                         nodenew3=dom.createElement('internal')  
                         nodenew4=dom.createElement('institution')  
                         metanodetext=dom.createTextNode('mpiwg')  
                         nodenew4.appendChild(metanodetext)  
                         nodenew3.appendChild(nodenew4)  
                         metanode2.appendChild(nodenew3)  
   
                 return dom.toxml().encode('utf-8')                  server.writeMetaDataFile(path,string,"yes")
   
     def setStartPageForm(self):      def setStartPageForm(self):
             """Form for changing the startpage"""              """Form for changing the startpage"""
Line 694  class ECHO_resource(CatalogAware,Folder, Line 853  class ECHO_resource(CatalogAware,Folder,
   
             params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)              params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)
   
                       try:                
             ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()              ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
           except:
                   zLOG.LOG("ECHO_ressource (changeViewerTemplateSet)", zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2])      
                   zLOG.LOG("ECHO_ressource (changeViewerTemplateSet)", zLOG.ERROR,'http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params)))
             #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)              #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)
             # hack Pfad auf die Dokumente              # hack Pfad auf die Dokumente
             path=self.metalink              path=self.metalink
Line 705  class ECHO_resource(CatalogAware,Folder, Line 866  class ECHO_resource(CatalogAware,Folder,
   
             path=re.sub('/index.meta','',path)               path=re.sub('/index.meta','',path) 
   
             path=re.sub(self.REQUEST['SERVER_URL'],'',path)          #TODO: direct access to the file system necessary, fix that also xmlrpc to the server where the index file is stored is possible    
             path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path)          parsedUrl=urlparse.urlparse(path)
           path=parsedUrl[2]
             path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server  
             path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server  
             path=re.sub('http://foxridge.mpiwg-berlin.mpg.de','',path) # falls foxridge als server  
   
             path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server  
             path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server  
             path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server  
             path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo  
   
             path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server  
   
           try:    
             return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()              return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
           except:
                   zLOG.LOG("ECHO_Resource (changeViewerTemplateSet)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
                   zLOG.LOG("ECHO_Resource (changeViewerTemplateSet)", zLOG.INFO,"http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path)
   
             if RESPONSE is not None:              if RESPONSE is not None:
                         RESPONSE.redirect('manage_main')                          RESPONSE.redirect('manage_main')
Line 1029  class ECHO_resource(CatalogAware,Folder, Line 1183  class ECHO_resource(CatalogAware,Folder,
                             self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]                              self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
                             self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]                              self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]
                     except:                      except:
                             """nothing"""                              zLOG.LOG("ECHO_collection (changeECHO_resource_metadata)",zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2])
   
               print self.newMetaXML()
             ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()              ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()
   
   
Line 1039  class ECHO_resource(CatalogAware,Folder, Line 1194  class ECHO_resource(CatalogAware,Folder,
   
           
   
       def getMDValueSimpleSearchField(self):
               """returns value for simple search"""
               
               try:
                   return " ".join([self.getMDValue('title',generic="yes"),
                                self.getMDValue('author',generic="yes"),
                                self.getMDValue('year',generic="yes"),self.getTitle()])
               except:
                   
                   #zLOG.LOG(" ECHO_collection(getMDSimpleSearchField)",zLOG.INFO," ".join([self.getMDValue('title',generic="yes"),
                    #            self.getMDValue('author',generic="yes"),
                     #           self.getMDValue('year',generic="yes"),'']))
                   return ""
   
     def getMDValue(self,fieldNameTest,empty=None,generic=None):      def getMDValue(self,fieldNameTest,empty=None,generic=None):
             """get md values"""              """get md values"""
Line 1046  class ECHO_resource(CatalogAware,Folder, Line 1214  class ECHO_resource(CatalogAware,Folder,
                           
             fieldName=None              fieldName=None
             if generic:              if generic:
                   if self.contentType:
                 ct=self.contentType.replace(" ","_").lower()                  ct=self.contentType.replace(" ","_").lower()
                   else:
                       zLOG.LOG("ECHO_collection (getMDValue)", zLOG.INFO, "no_content type for %s"%self.getId())
                       ct=""
                                   
                 #caching                  #caching
                 if not hasattr(self,'_v_mapHash'): #noch keine cachevariable                  if not hasattr(self,'_v_mapHash'): #noch keine cachevariable
Line 1067  class ECHO_resource(CatalogAware,Folder, Line 1239  class ECHO_resource(CatalogAware,Folder,
             if not empty:              if not empty:
                #FIXME: warum gibt es manchmal kein metadatahas                 #FIXME: warum gibt es manchmal kein metadatahas
                 try:                  try:
                     return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)                      
                       ret =self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
                 except:                  except:
                     zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId())                       zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId()) 
                     return ""                      return ""
                                       
             else:              else:
   
                 return self.metaDataHash.get(fieldNameTest,empty)                     
                      ret= self.metaDataHash.get(fieldNameTest,empty)
              
               if type(ret) is StringType:
                  return ret.decode('utf-8')
               else:
                  return ret
   
     getFieldValue=getMDValue #depricated      getFieldValue=getMDValue #depricated
   
Line 1150  class ECHO_resource(CatalogAware,Folder, Line 1329  class ECHO_resource(CatalogAware,Folder,
         {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'},          {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'},
         {'label':'set/change startpage','action':'setStartPageForm'},          {'label':'set/change startpage','action':'setStartPageForm'},
         {'label':'Copy MD for indexing and search','action':'copySearchFields'},          {'label':'Copy MD for indexing and search','action':'copySearchFields'},
           {'label':'Change AccessRights','action':'changeAccessRightForm'}, 
         )          )
   
   
Line 1199  class ECHO_resource(CatalogAware,Folder, Line 1379  class ECHO_resource(CatalogAware,Folder,
                 setattr(self,'metaDataHash',{})                  setattr(self,'metaDataHash',{})
         self.metaDataHash[field]=value[0:]          self.metaDataHash[field]=value[0:]
                   
   
     def copySearchFields(self):      def copySearchFields(self):
             """copys metadatafields to the object"""              """copys metadatafields to the object"""
             fields=['author','title','year']              fields=['author','title','year']
Line 1328  class ECHO_resource(CatalogAware,Folder, Line 1507  class ECHO_resource(CatalogAware,Folder,
   
                 return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')()                  return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')()
   
         self.REQUEST.SESSION['metadict']=metadict          #self.REQUEST.SESSION['metadict']=metadict
   
                   
                   
         self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict'])  
                   
           self.REQUEST.SESSION['diffs']=checkDiffs(self,metadict)
   
                                   
         if template=="yes":          if template=="yes":
                   #pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_resourceMD.zpt'),metadict=metadict).__of__(self)
                 pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt')                  pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt')
                 return pt()                  
                   return pt(metadict=metadict)
   
                   
   
Line 1448  class ECHO_externalLink(Folder,ECHO_basi Line 1629  class ECHO_externalLink(Folder,ECHO_basi
         """template fuer content"""          """template fuer content"""
         ret= ECHO_basis.content_html(self,'externalLink')          ret= ECHO_basis.content_html(self,'externalLink')
                   
           if type(ret) is StringType:
               return ret.decode('utf-8')
           else:
              return ret
                   
         try:  
             return ret.encode('utf-8')  
           
         except:  
                     try:   
                         return ret.decode('latin-1')  
                     except:  
                             
                         return ret  
           
     def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords):      def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords):
   
Line 1616  def manage_addECHO_link(self,id,title,la Line 1793  def manage_addECHO_link(self,id,title,la
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
                   
   
 class ECHO_collection(Folder, Persistent, Implicit, Cacheable,ECHO_basis):  class ECHO_collection(CatalogAware, Folder, Persistent, Implicit, Cacheable,ECHO_basis):
     """ECHO Collection"""      """ECHO Collection"""
   
       management_page_charset="utf-8"
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
     meta_type='ECHO_collection'      meta_type='ECHO_collection'
       default_catalog='resourceCatalog'
       
 #    viewClassificationList=viewClassificationListMaster  #    viewClassificationList=viewClassificationListMaster
     displayTypes=displayTypes      displayTypes=displayTypes
   
     path="/mpiwg/online/permanent/shipbuilding"      path="/mpiwg/online/permanent/shipbuilding"
   
       def getMDValueSimpleSearchField(self):
             """returns value for simple search"""
             return " ".join([self.title,self.description])
                                
     def getTitleAndLabel(self):      def getTitleAndLabel(self):
         """gibt title und label zurueck"""          """gibt title und label zurueck"""
         return (getattr(self,'title',''),getattr(self,'label',''))          return (getattr(self,'title',''),getattr(self,'label',''))
Line 1734  class ECHO_collection(Folder, Persistent Line 1918  class ECHO_collection(Folder, Persistent
                 pt=zptFile(self, 'zpt/changeMetaDataLinkForm')                  pt=zptFile(self, 'zpt/changeMetaDataLinkForm')
                 pt.content_type="text/html"                  pt.content_type="text/html"
                 return pt()                  return pt()
               
       def changeAccessRightsCollectionForm(self,preselect=None):
           """change access rights of all resources in this collection"""
   
           pt=zptFile(self, 'zpt/changeAccessRightsCollectionForm')
           pt.content_type="text/html"
           return pt(preselect=preselect)
           
           
     def changeAccessRightsCollection(self):      def changeAccessRightsCollection(self):
             """change"""              """change"""
             ret=""              ret=""
Line 1742  class ECHO_collection(Folder, Persistent Line 1935  class ECHO_collection(Folder, Persistent
             resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])              resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
             for resource in resources:              for resource in resources:
                                         
                     try:                      if argv.has_key(resource[1].getId()+'_xml'):
                             ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"                              ret+=resource[1].getId()+"   "+argv[resource[1].getId()+'_xml']+"</br>"
                             resource[1].changeAccessRightMD(argv[resource[1].getId()])                              resource[1].setAccessRightXML(argv[resource[1].getId()+'_xml'])
                     except:                              resource[1].accessRight=argv[resource[1].getId()+'_xml']
                             pass                      elif argv.has_key(resource[1].getId()+'_echo'):
                               ret+="only local:"+resource[1].getId()+"   "+argv[resource[1].getId()+'_echo']+"</br>"
                               resource[1].accessRight=argv[resource[1].getId()+'_echo']
                       else:
                               ret+="ERROR:" +resource[0]
             return ret              return ret
   
     def changeMetaDataLinkInCollection(self):      def changeMetaDataLinkInCollection(self):
Line 2106  class ECHO_collection(Folder, Persistent Line 2303  class ECHO_collection(Folder, Persistent
         areas = self.getAllMapAreas()          areas = self.getAllMapAreas()
         return self.createJSAreas(areas)          return self.createJSAreas(areas)
   
       
       emptyPartner=ECHO_partner("", "","", "", "", "", "", "", "")
       
     security.declarePublic('getCreditObject')      security.declarePublic('getCreditObject')
     def getCreditObject(self,name):      def getCreditObject(self,name):
         """credit id to credititem"""          """credit id to credititem"""
         try:          try:
             return getattr(self.partners,name)              return getattr(self.partners,name)
         except:          except:
             return ""              
               return self.emptyPartner
                   
   
     security.declarePublic('ECHO_generateNavBar')      security.declarePublic('ECHO_generateNavBar')
     def ECHO_generateNavBar(self):      def ECHO_generateNavBar(self):
Line 2182  class ECHO_collection(Folder, Persistent Line 2384  class ECHO_collection(Folder, Persistent
         {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},          {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
         {'label':'ImportCollection','action':'importCollection'},          {'label':'ImportCollection','action':'importCollection'},
         {'label':'Copy MD for indexing and search','action':'copySearchFields'},          {'label':'Copy MD for indexing and search','action':'copySearchFields'},
           {'label':'Change access rights',  'action':'changeAccessRightsCollectionForm'},
         )          )
   
           
Line 2278  class ECHO_collection(Folder, Persistent Line 2481  class ECHO_collection(Folder, Persistent
         #print "NN",argv          #print "NN",argv
         ret = ECHO_basis.content_html(self,'collection')          ret = ECHO_basis.content_html(self,'collection')
                   
         try:          if type(ret) is StringType:
                 return ret.encode('utf-8')                 return ret.decode('utf-8')
         except:          else:
               
             try:   
                 return ret.decode('latin-1')  
             except:  
                   
                 return ret                  return ret
                             
                
     def getCredits(self):      def getCredits(self):
         """Ausgabe der credits"""          """Ausgabe der credits"""
         if self.credits:          if self.credits:
Line 2346  class ECHO_collection(Folder, Persistent Line 2545  class ECHO_collection(Folder, Persistent
   
     getSubCols = ECHO_helpers.getSubCols      getSubCols = ECHO_helpers.getSubCols
   
       def getSubcolsXMLRpc(self,searchSimple):
           """simplesearch results suitable for xml rpc, gives back array objid,url"""
           
           return [x.absolute_url() for x in self.getSubCols(searchSimple=searchSimple)]
       
       
 Globals.InitializeClass(ECHO_collection)  Globals.InitializeClass(ECHO_collection)
           
 def manage_addECHO_collectionForm(self):  def manage_addECHO_collectionForm(self):
Line 2643  class ECHO_root(Folder,Persistent,Implic Line 2848  class ECHO_root(Folder,Persistent,Implic
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
           
     meta_type="ECHO_root"      meta_type="ECHO_root"
       management_page_charset="utf-8"
                   
       getSubCols = ECHO_helpers.getSubCols
   
       manage_options=Folder.manage_options+(
                   {'label':'Main Config','action':'ECHO_copyright_configForm'},
                   {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
                   {'label':'Change Weights','action':'changeWeights'},
                   {'label':'Generate from RDF','action':'generateFromRDFForm'},
                   {'label':'update Resource Catalog','action':'updateResourceCatalog'},
                   {'label':'Copy MD for indexing and search','action':'copySearchFields'},
   )
   
       
       def copySearchFields(self,RESPONSE=None):
               """copys < metadatafields to the object"""
               resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
   
               for resource in resources:
   
                       resource[1].copySearchFields()
   
               if RESPONSE is not None:
                       RESPONSE.redirect('manage_main')
           
     def mod_re_sub(self,pattern,replace,string):      def mod_re_sub(self,pattern,replace,string):
         """re.sub aus mod re zur Verfuegung stellen"""          """re.sub aus mod re zur Verfuegung stellen"""
Line 2676  class ECHO_root(Folder,Persistent,Implic Line 2904  class ECHO_root(Folder,Persistent,Implic
                   
         for resource in resources:          for resource in resources:
             resource[1].reindex()              resource[1].reindex()
             print "<p> done %s </p>\n"              #print "<p> done %s </p>\n"
             if RESPONSE:              if RESPONSE:
                 RESPONSE.write("<p> done %s </p>\n"%resource[0])                  RESPONSE.write("<p> done %s </p>\n"%resource[0])
                                   
         if RESPONSE:          if RESPONSE:
             RESPONSE.write("<p> ok </p></html></body>\n")              RESPONSE.write("<p> ok </p></html></body>\n")
                           
     def printer(self,txt):  
         print txt  
         print txt[2]  
         print txt[2].getImageTag()  
         print "HO"  
         return txt[2].getImageTag()  
   
     def printer2(self,txt):  
         print txt  
   
   
     def item2(self,txt):  
         return txt[2]  
   
     def setLanguage(self,lang):      def setLanguage(self,lang):
             """Set language cookie"""              """Set language cookie"""
Line 2710  class ECHO_root(Folder,Persistent,Implic Line 2925  class ECHO_root(Folder,Persistent,Implic
                           
             self.REQUEST.RESPONSE.setCookie('lang_exhibition',lang,path="/")              self.REQUEST.RESPONSE.setCookie('lang_exhibition',lang,path="/")
             self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1'])              self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1'])
               
     def getLanguage(self):      def getLanguage(self):
             """get language cookie"""              """get language cookie"""
             lang= self.REQUEST.cookies.get('lang_exhibition','de')              lang= self.REQUEST.cookies.get('lang_exhibition','de')
Line 2899  class ECHO_root(Folder,Persistent,Implic Line 3115  class ECHO_root(Folder,Persistent,Implic
                 pt=zptFile(self, 'zpt/changeWeightForm')                  pt=zptFile(self, 'zpt/changeWeightForm')
                 pt.content_type="text/html"                  pt.content_type="text/html"
                 return pt()                  return pt()
     getSubCols = ECHO_helpers.getSubCols  
   
     manage_options=Folder.manage_options+(  
                 {'label':'Main Config','action':'ECHO_copyright_configForm'},  
                 {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},  
                 {'label':'Change Weights','action':'changeWeights'},  
                 {'label':'Generate from RDF','action':'generateFromRDFForm'},  
   
 )  
   
           
   
     def reloadMetaDataFromStorageWarning(self,RESPONSE=None):      def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
Line 2965  class ECHO_root(Folder,Persistent,Implic Line 3171  class ECHO_root(Folder,Persistent,Implic
             return ret              return ret
   
     def getValueFromClass(self,field,found):      def getValueFromClass(self,field,found):
             """retattribute falss existing"""              """ret attribute if existing"""
             try:              try:
                                           
                     return getattr(found,field).decode('ascii','ignore')                      return getattr(found,field).decode('ascii','ignore')
Line 3438  class ECHO_root(Folder,Persistent,Implic Line 3644  class ECHO_root(Folder,Persistent,Implic
         inst=self.ZopeFind(self.institutions, obj_ids=[id])          inst=self.ZopeFind(self.institutions, obj_ids=[id])
         return inst          return inst
   
       def updateResourceCatalog(self,REQUEST,RESPONSE):
           """update ressource catalog"""
           catalog=getattr(self,'resourceCatalog',None)
           if not catalog:
               return """<html><body><h3>No resourceCatalog available</h3></body></html>"""
           
           else:
               class element:
                   def __init__(self,group,name):
                       self.group=group
                       self.name=name
               catalog.manage_delObjects('author splitter')
               #elements=[element('Stop Words',""" Don't remove stop words' """),element('Word Splitter','ECHO author splitter')]
               elements=[element('Word Splitter','ECHO author splitter')]
               manage_addLexicon(catalog,id="author splitter",elements=elements)
               
               return catalog.manage_catalogReindex(REQUEST,RESPONSE,'manage_main')
               
           
       def checkMetaDataLinks(self,correct=None):
           """check all metadatalinks and if correct is set change the servername to content.mpiwg-berlin.mpg.de"""
           
           self.REQUEST.RESPONSE.write("<html><body>")
           for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1):
               metalink=resource[1].metalink
           
               try:
                   url=urllib.urlopen(metalink)
               except:
                   
                   self.REQUEST.RESPONSE.write("<p>ERROR (opening %s):"%resource[1].absolute_url() +" -- %s %s <br>"%sys.exc_info()[0:2])
                   self.REQUEST.RESPONSE.write("-----------%s"%metalink)
               
                   if correct:
                       urlparsed=[x for x in urlparse.urlparse(metalink)]
                       urlparsed[1]="content.mpiwg-berlin.mpg.de"
                       neu=urlparse.urlunparse(urlparsed)
                       resource[1].metalink=neu[0:]
                       self.REQUEST.RESPONSE.write("----------changed to:%s)"%neu)
                   
 def manage_addECHO_root(self,id,title,RESPONSE=None):  def manage_addECHO_root(self,id,title,RESPONSE=None):
     """Add an ECHO_root"""      """Add an ECHO_root"""
Line 3500  def manage_addECHO_copyrightType(self,id Line 3745  def manage_addECHO_copyrightType(self,id
     
   
     
 class ECHO_partner(Image,Persistent,ECHO_basis):  
     """ECHO Partner"""  
   
     meta_type="ECHO_partner"  
   
     def __init__(self, id, title,url, file, copyrightType, person, email, country, color, content_type='', precondition=''):  
         self.__name__=id  
         self.title=title  
         self.url=url  
         self.person=person  
         self.email=email  
         self.country=country  
         self.color=color  
         self.precondition=precondition  
         self.copyrightType=copyrightType  
         data, size = self._read_data(file)  
         content_type=self._get_content_type(file, data, id, content_type)  
         self.update_data(data, content_type, size)  
   
     manage_options = Image.manage_options+(  
         {'label':'Partner Information','action':'ECHO_partner_config'},  
         )  
   
       
     def changeECHO_partner(self,url,copyrightType,person, email, country, color, RESPONSE=None):  
         """Change main information"""  
         self.url=url  
         self.person=person  
         self.email=email  
         self.country=country  
         self.color=color  
         self.copyrightType=copyrightType  
         if RESPONSE is not None:  
             RESPONSE.redirect('manage_main')  
               
               
   
     def ECHO_partner_config(self):  
         """Main configuration"""  
         if not hasattr(self,'url'):  
             self.url=""  
         pt=zptFile(self, 'zpt/ChangeECHO_partner.zpt')  
         return pt()  
   
           
 manage_addECHO_partnerForm=DTMLFile('dtml/ECHO_partnerAdd',globals(),  
                              Kind='ECHO_partner',kind='ECHO_partner')  
   
   
   
 def manage_addECHO_partner(self, id, url, person, email, country, color, file=None, copyrightType='', title='', precondition='', content_type='',  
                     REQUEST=None):  
     """  
     Add a new ECHO_partner object.  
   
     Creates a new ECHO_partner object 'id' with the contents of 'file'.  
     Based on Image.manage_addImage  
     """  
   
     id=str(id)  
     title=str(title)  
     content_type=str(content_type)  
     precondition=str(precondition)  
   
     id, title = OFS.Image.cookId(id, title, file)  
   
     self=self.this()  
   
     # First, we create the image without data:  
     self._setObject(id, ECHO_partner(id,title,url,'',copyrightType, person, email, country, color, content_type, precondition))  
   
     # Now we "upload" the data.  By doing this in two steps, we  
     # can use a database trick to make the upload more efficient.  
     if file:  
         self._getOb(id).manage_upload(file)  
     if content_type:  
         self._getOb(id).content_type=content_type  
   
     if REQUEST is not None:  
         try:    url=self.DestinationURL()  
         except: url=REQUEST['URL1']  
         REQUEST.RESPONSE.redirect('%s/manage_main' % url)  
     return id  
   
 class ECHO_linkList(ZopePageTemplate,ECHO_basis):  class ECHO_linkList(ZopePageTemplate,ECHO_basis):
     """LinkList Objekt"""      """LinkList Objekt"""

Removed from v.1.254  
changed lines
  Added in v.1.267


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