--- ECHO_content/ECHO_collection.py 2006/03/03 20:34:11 1.266
+++ ECHO_content/ECHO_collection.py 2006/10/18 14:42:33 1.275
@@ -18,8 +18,9 @@ except:
import urlparse
import string
import tempfile
+import zipfile
import re
-import os
+import os,shutil
import OFS.Image
from types import *
from OFS.Cache import Cacheable
@@ -34,10 +35,11 @@ from Globals import DTMLFile
import Globals
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
-from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
+from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate,manage_addPageTemplate
from Globals import Persistent, package_home
from Acquisition import Implicit
from Products.ZCatalog.CatalogPathAwareness import CatalogAware
+from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon
import urllib
import cgi
@@ -70,7 +72,8 @@ from ECHO_language import *
from ECHO_movie import *
import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen
import xmlrpclib
-
+
+
def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""):
@@ -632,9 +635,14 @@ class ECHO_resource(CatalogAware,Folder,
#print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
+ tries=0
+ for i in range(10):
+ x=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 x=="ok":
+
+ break;
+
- 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:
RESPONSE.redirect('manage_main')
@@ -792,9 +800,14 @@ class ECHO_resource(CatalogAware,Folder,
params="startpage=%s"%startpage
#print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))
-
- 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'+urllib.quote('?'+params))).read()
-
+
+ tries=0
+ for i in range(10):
+ x=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'+urllib.quote('?'+params))).read()
+ if x=="ok":
+
+ break;
+
path=self.metalink
@@ -823,6 +836,11 @@ class ECHO_resource(CatalogAware,Folder,
return pt()
+ def setLink(self, link=None):
+ """change link field"""
+ if link is not None:
+ self.link = link
+
def getTextToolsField(self,name,default=''):
"""Lese Textoolsfelder aus index.meta im path aus"""
@@ -852,10 +870,16 @@ class ECHO_resource(CatalogAware,Folder,
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()
- except:
- zLOG.LOG("ECHO_ressource (changeViewerTemplateSet)", zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2])
+ try:
+ tries=0
+ for i in range(10):
+ x=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()
+ if x=="ok":
+
+ break;
+
+ 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)
# hack Pfad auf die Dokumente
@@ -865,13 +889,13 @@ class ECHO_resource(CatalogAware,Folder,
path=re.sub('/index.meta','',path)
- #TODO: direct access to the file system necessary, fix that also xmlrpc to the server where the index file is stored is possible
- parsedUrl=urlparse.urlparse(path)
- path=parsedUrl[2]
-
- try:
- return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
- except:
+ #TODO: direct access to the file system necessary, fix that also xmlrpc to the server where the index file is stored is possible
+ parsedUrl=urlparse.urlparse(path)
+ path=parsedUrl[2]
+
+ try:
+ 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)
@@ -1009,6 +1033,25 @@ class ECHO_resource(CatalogAware,Folder,
else:
return ''
+ def getOwnerOriginalsHTML(self):
+ """gibt Liste der foerdernden Institutionen aus"""
+
+ if hasattr(self,'ownerOriginal'):
+ obj=self.ownerOriginal
+ ret=obj.getOwner()
+ return ret
+ else:
+ return ''
+
+ def getDigiCopyByHTML(self):
+ """gibt Liste der foerdernden Institutionen aus"""
+
+ if hasattr(self,'digiCopyBy'):
+ obj=self.digiCopyBy
+ ret=obj.getDigiCopyBy()
+ return ret
+ else:
+ return ''
def getCredits(self):
"""Ausgabe der credits"""
@@ -1185,8 +1228,14 @@ class ECHO_resource(CatalogAware,Folder,
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()
-
+ tries=0
+ for i in range(10):
+ x=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()
+ if x=="ok":
+
+ break;
+
+
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
@@ -1236,7 +1285,7 @@ class ECHO_resource(CatalogAware,Folder,
if not fieldName:
fieldName=fieldNameTest
if not empty:
- #FIXME: warum gibt es manchmal kein metadatahas
+ #FIXME: warum gibt es manchmal kein metadatahas
try:
ret =self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
@@ -1264,8 +1313,12 @@ class ECHO_resource(CatalogAware,Folder,
self.copyIndex_meta2echo_resource()
try:
+
+
return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
except:
+ #print self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix
+
return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
def showMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
@@ -1708,7 +1761,7 @@ class ECHO_link(ECHO_externalLink):
meta_type="ECHO_link"
manage_options = ECHO_externalLink.manage_options+(
- {'label':'add links config','action':'ECHO_link_addLinksForm'},
+ {'label':'add links config','action':'ECHO_link_addLinksForm'},
)
def ECHO_link_addLinksForm(self):
@@ -1747,7 +1800,71 @@ class ECHO_link(ECHO_externalLink):
#
# return ret
#
-
+ def getCopyrightsHTML(self):
+ """gib (link auf copyright link, mediatyp, institution, copyrightType, label von copyrightType) aus"""
+
+ if hasattr(self,'copyrightModel'):
+ obj=self.copyrightModel
+
+ else:
+ return "ERROR"
+ ret=[]
+
+ for copyright in obj.getCopyrights(): #copyright - media / partner / copyrightID
+
+
+ try:
+ if hasattr(self.copyrightTypes,copyright[2]):
+ copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
+ link="copyrightTypes/"+copyright[2]+'/copyright.html'
+ else:
+ copyrightTypeObj=getattr(obj,copyright[2])
+ link="copyrightModel/"+copyright[2]+'/copyright.html'
+
+ label=copyrightTypeObj.label
+ url=getattr(copyrightTypeObj, 'url', '')
+
+ if url!='':
+ ret.append((url,copyright[0],copyright[1],copyright[2],label))
+ else:
+ if hasattr(copyrightTypeObj, 'copyright.html'):
+ ret.append(("""%s?partner=%s"""%(link,copyright[1]),copyright[0],copyright[1],copyright[2],label))
+ else:
+ ret.append(('empty',copyright[0],copyright[1],copyright[2],label))
+ except:
+ """nothing"""
+
+ return ret
+
+ def getInstitutionsHTML(self):
+ """gibt Liste der foerdernden Institutionen aus"""
+
+ if hasattr(self,'support'):
+ obj=self.support
+ ret=obj.getSupporter()
+ return ret
+ else:
+ return ''
+
+ def getOwnerOriginalsHTML(self):
+ """gibt Liste der foerdernden Institutionen aus"""
+
+ if hasattr(self,'ownerOriginal'):
+ obj=self.ownerOriginal
+ ret=obj.getOwner()
+ return ret
+ else:
+ return ''
+
+ def getDigiCopyByHTML(self):
+ """gibt Liste der foerdernden Institutionen aus"""
+
+ if hasattr(self,'digiCopyBy'):
+ obj=self.digiCopyBy
+ ret=obj.getDigiCopyBy()
+ return ret
+ else:
+ return ''
def index_html(self):
"""standard link"""
@@ -1805,6 +1922,83 @@ class ECHO_collection(CatalogAware, Fold
path="/mpiwg/online/permanent/shipbuilding"
+
+ def exportImportObjects_html(self,RESPONSE):
+ """ImportObject"""
+ pt=zptFile(self, 'zpt/exportImportObjects.zpt')
+ pt.content_type="text/html"
+ return pt()
+
+ def importObjects_html(self,RESPONSE):
+ """ImportObject"""
+ pt=zptFile(self, 'zpt/importObjects.zpt')
+ pt.content_type="text/html"
+ return pt()
+
+ def importObjects(self,zfile,RESPONSE=None,REQUEST=None):
+ """import object from file"""
+
+ zf=zipfile.ZipFile(zfile,"r")
+ tmpdir=tempfile.mkdtemp() # create tempdir
+ ret=None
+
+ for name in zf.namelist():
+ fn=tempfile.mkstemp()[1]
+ tf=file(fn,"w")
+ x=zf.read(name)
+ tf.write(x)
+ tf.close()
+ try:
+ self._importObjectFromFile(fn,set_owner=1)
+ except:
+ if not ret:
+ ret=""
+ ret+="Cannot import: %s (Already existing?)
"%name
+ os.remove(fn)
+
+ if ret:
+ return """