--- ECHO_content/ECHO_collection.py 2004/10/05 09:30:46 1.174
+++ ECHO_content/ECHO_collection.py 2004/10/27 16:05:55 1.185
@@ -29,8 +29,9 @@ from Products.PageTemplates.PageTemplate
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
from Globals import Persistent, package_home
from Acquisition import Implicit
-from ECHO_helpers import displayTypes
+from ECHO_helpers import displayTypes, getText,readFieldFromXML
import urllib
+import smtplib
import time
from Ft.Xml.Domlette import NonvalidatingReader
from Ft.Xml.Domlette import PrettyPrint
@@ -38,6 +39,7 @@ from Ft.Xml import EMPTY_NAMESPACE
import Ft.Xml.XPath
import cStringIO
+import zLOG
try:
from psycopg import libpq
@@ -268,13 +270,7 @@ def toList(field):
else:
return field
-def getText(nodelist):
- rc = ""
- for node in nodelist:
- if node.nodeType == node.TEXT_NODE:
- rc = rc + node.data
- return rc
def getTextFromNode(nodename):
nodelist=nodename.childNodes
@@ -589,7 +585,7 @@ class ECHO_layoutTemplate(ZopePageTempla
def manage_addECHO_layoutTemplateForm(self):
"""Form for adding"""
- pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_layoutTemplate.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddECHO_layoutTemplate.zpt')).__of__(self)
return pt()
from urllib import quote
@@ -1011,19 +1007,73 @@ class ECHO_resource(Folder,Persistent):
pt.content_type="text/html"
return pt()
+
+ def createImageUrl(self,pn=1):
+ """create ImageUrl"""
+
+
+ resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')
+
+ digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix')
+ images=readFieldFromXML(self.metalink,'texttool','image')
+
+
+ if (not resourcepath) or (not digiliburlprefix) or (not images):
+ zLOG.LOG("ECHO (createImageUrl)",zLOG.ERROR,"Cannot create ImageUrl for %s"%self.absolute_url())
+ return None
+ resourcepath=resourcepath.replace('/mpiwg/online','')
+ if not digiliburlprefix: digiliburlprefix="http://echo.mpiwg-berlin.mpg.de/zogilib?"
+
+ if (not images) or (not resourcepath): return None
+
+ return "%sfn=%s&pn=%i"%(digiliburlprefix,resourcepath+"/"+images,pn)
+ def copyTitleToInfoXML(self,RESPONSE=None):
+ """copy title from the resource"""
+ presentationXML=readFieldFromXML(self.metalink,'texttool','presentation')
+ resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')
+ if (not presentationXML) or (not resourcepath):
+ if RESPONSE:
+ RESPONSE.write("Error: %s\n"%self.getId())
+ else:
+ return None,self.absolute_url()
+
+ try:
+ fh=file(os.path.join(resourcepath,presentationXML),'w')
+ fh.write("""
+
+ %s
+
+ yes
+ """%self.title)
+ fh.close()
+ return 1,self.getId()
+ except:
+ if RESPONSE:
+ RESPONSE.write("Error: %s\n"%self.getId())
+ else:
+ return None,self.absolute_url()
+
+
def setStartPage(self,startpage=None,RESPONSE=None):
"""set start page, if no startpage defined use the generic one of the resource"""
- if (not (type(startpage)==StringType)) and ("__generic" in startpage): # checke ob generic in der liste
+ if (not (type(startpage)==StringType)):
+ if ("__generic" in startpage): # checke ob generic in der liste
+ startpage=self.absolute_url()+"/startpage_html"
+ elif ("__firstPage" in startpage): # checke ob generic in der liste
+ startpage=self.createImageUrl()
+
+ if (not startpage):
startpage=self.absolute_url()+"/startpage_html"
-
- if (not startpage) or (startpage=="__generic"):
- startpage=self.absolute_url()+"/startpage_html"
-
+ elif (startpage=="__generic"):
+ startpage=self.absolute_url()+"/startpage_html"
+ elif (startpage=="__firstPage"):
+ startpage=self.createImageUrl()
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()
@@ -1031,13 +1081,14 @@ class ECHO_resource(Folder,Persistent):
path=re.sub(self.REQUEST['SERVER_URL'],'',path)
path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path)
-
+
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://content.mpiwg-berlin.mpg.de','',path) # falls content als server
path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server
- path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server
+ path=re.sub('http://vision.mpiwg-berlin.mpg.de','',path) # falls vision als server
+ path=re.sub('http://xserve02.mpiwg-berlin.mpg.de:18880','',path) # falls vision als server
path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo
path=re.sub('/index.meta','',path)
@@ -1053,6 +1104,7 @@ class ECHO_resource(Folder,Persistent):
return pt()
+
def getTextToolsField(self,name,default=''):
"""Lese Textoolsfelder aus index.meta im path aus"""
@@ -1141,17 +1193,29 @@ class ECHO_resource(Folder,Persistent):
def getFullTextXML(self,noredirect=None):
"""getFullTextXML; gives the FullText as an XML Document, and if somthing goes wrong."""
+
try:
+ #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"open %s"%self.metalink)
fh=ECHO_helpers.urlopen(self.metalink)
+ #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"opened %s"%self.metalink)
dom=xml.dom.minidom.parse(fh)
texttools=dom.getElementsByTagName('texttool')
text=texttools[0].getElementsByTagName('text')
texturl=getText(text[0].childNodes)
+
+ #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"found %s"%texturl)
+ fh.close()
+ #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"closed fh")
+ #keine url
if not (texturl.split(":")[0] in ['http','ftp','file']):
- texturl=re.sub("//","/",texturl)
- #return texturl+"::"+texturl.split(":")[0]
+ if not noredirect:
+ return file(texturl).read()
+ else:
+ return texturl
+
if not noredirect:
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
+ zLOG.LOG("ECHO Fulltext",zLOG.INFO,"redirect to:%s"%texturl)
self.REQUEST.RESPONSE.redirect(texturl)
else:
return texturl
@@ -1177,6 +1241,8 @@ class ECHO_resource(Folder,Persistent):
archivepath=getText(text[0].childNodes)
archivepath=re.sub('/mpiwg/online/','',archivepath)
imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp
+ fh.close()
+
if not noredirect:
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
self.REQUEST.RESPONSE.redirect(imageurl)
@@ -2165,8 +2231,28 @@ class ECHO_collection(Folder, Persistent
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+ def copyTitleToInfoXMLFolder(self,RESPONSE=None):
+ """copy title into the title field of info.xml
+ author and date werden leer!!!
+ """
-
+
+ resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
+
+
+ for resource in resources:
+ ret,txt=resource[1].copyTitleToInfoXML()
+ if (not ret) and RESPONSE:
+ RESPONSE.write("error: %s\n"%txt)
+ if ret and RESPONSE:
+ RESPONSE.write("ok: %s\n"%txt)
+
+ #zLOG.LOG("ECHO (copyTitleToInfoXMLFolder)",zLOG.INFO,txt)
+ if RESPONSE is not None:
+ RESPONSE.write("done!\n")
+ RESPONSE.close()
+ RESPONSE.redirect('manage_main')
+
def copySearchFields(self,RESPONSE=None):
"""copys import metadatafields to the object"""
resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
@@ -3023,7 +3109,18 @@ class ECHO_root(Folder,Persistent,Implic
#return "http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl"
###END CDLI add
-
+ def sendForm(self,fromaddr,content,server='mail.mpiwg-berlin.mpg.de'):
+ """sendform"""
+ toaddrs=["dwinter@mpiwg-berlin.mpg.de"]
+
+ msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
+ % (fromaddr, ", ".join(toaddrs),"testsub"))
+ server = smtplib.SMTP(server)
+ #server.set_debuglevel(1)
+ msg=msg+content
+ server.sendmail(fromaddr, toaddrs, msg)
+ server.quit()
+
def generateFromRDFForm(self):
"""change form"""
pt=PageTemplateFile('Products/ECHO_content/zpt/generateFromRDFForm').__of__(self)
@@ -3536,14 +3633,17 @@ class ECHO_root(Folder,Persistent,Implic
links=Ft.Xml.XPath.Evaluate(".//link", contextNode=dom)
for link in links:
#link.tagName="a"
-
+
ref=link.getAttributeNS(EMPTY_NAMESPACE,"ref")
pn=link.getAttributeNS(EMPTY_NAMESPACE,"page")
- cns=link.childNodes
+
+ cns=link.childNodes[0:]
newLink=dom.createElementNS(EMPTY_NAMESPACE,"a")
- for cn in cns:
- newLink.appendChild(cn)
+ for x in cns:
+ newLink.appendChild(x)
+
+
link.parentNode.replaceChild(newLink,link)
if self.checkRef(ref):
@@ -3568,12 +3668,20 @@ class ECHO_root(Folder,Persistent,Implic
return ""
def checkRef(self,ref):
- dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':'','vl_sites':''}
- res=None
- for db in dbs.keys():
-
- res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))
- return res
+ if ref[0:3]=='lit':
+ if len(self.library_data({ 'id':ref}))>0:
+ return 1
+ try:
+ if ref[0:7]=="tec_cat":
+ return 1
+ except:
+ """nothing"""
+
+ dbs={'vl_technology':'','vl_people':'','vl_sites':''}
+ res=None
+ for db in dbs.keys():
+ res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))
+ return res
#Ende Methode fuer vlp