--- ECHO_content/ECHO_collection.py 2004/06/28 14:42:32 1.131
+++ ECHO_content/ECHO_collection.py 2004/07/17 10:19:06 1.141
@@ -29,7 +29,7 @@ from Products.PageTemplates.ZopePageTemp
from Globals import Persistent, package_home
from Acquisition import Implicit
from ECHO_helpers import displayTypes
-
+import urllib
try:
from psycopg import libpq
@@ -184,6 +184,8 @@ class BrowserCheck:
self.isIEMac = self.isIE and self.isMac
+
+
def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
"""Einlesen der Metadaten und und erstellen des geaenderten XML file"""
def updateTextToolNode(tag,value):
@@ -484,6 +486,156 @@ class ECHO_resource(Folder,Persistent):
getSubCols = ECHO_helpers.getSubCols
+ security.declareProtected('View','index_html')
+ def getRDF(self):
+ """rdf"""
+ ret=""
+ about="""
"+geturl)
+
+ 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
+
+ def changeAccessRightMD(self,accessright,RESPONSE=None):
+ """change the rights"""
+
+ params="accessright=%s"%accessright
+
+
+ #print urllib.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
+
+
+ urllib.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()
+
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+
+ def setAccessRightXML(self,accessright):
+ """set accessright"""
+ url=self.metalink
+
+ try:
+ geturl=""
+ for line in urllib.urlopen(url).readlines():
+ geturl=geturl+line
+
+
+ except:
+ return (None,"Cannot open: "+url)
+
+ try:
+ dom=xml.dom.minidom.parseString(geturl)
+ root=dom.getElementsByTagName('resource')[0]
+ except:
+ return (None,"Cannot parse: "+url+"
"+geturl)
+
+ metanodes=dom.getElementsByTagName('access-conditions')
+
+ if not metanodes:
+ nodenew=dom.createElement('access-conditions')
+ root.appendChild(nodenew)
+ metanode=nodenew
+ else:
+ metanode=metanodes[0]
+
+ accesses=metanode.getElementsByTagName('access')
+
+ if not accesses:
+ nodenew2=dom.createElement('access')
+ metanode.appendChild(nodenew2)
+ metanode2=nodenew2
+ else:
+ metanode2=accesses[0]
+
+ internal=metanode.getElementsByTagName('internal')
+
+ if internal:
+ metanode2.removeChild(internal[0]).unlink()
+
+ free=metanode.getElementsByTagName('free')
+
+ if free:
+ metanode2.removeChild(internal[0]).unlink()
+
+
+ if accessright=='free':
+ 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')
+
def setStartPageForm(self):
"""Form for changing the startpage"""
@@ -515,7 +667,8 @@ class ECHO_resource(Folder,Persistent):
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('/index.meta','',path)
@@ -554,7 +707,7 @@ class ECHO_resource(Folder,Persistent):
paramList=['project','startpage','xslt','thumbtemplate','topbar','digiLibTemplate']
- writeMetadata(self.metalink,self.metaDataHash,project,None,xslt,thumbtemplate,topbar,digiLibTemplate)
+ #writeMetadata(self.metalink,self.metaDataHash,project,None,xslt,thumbtemplate,topbar,digiLibTemplate)
params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate)
@@ -575,6 +728,8 @@ class ECHO_resource(Folder,Persistent):
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
return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
@@ -584,12 +739,20 @@ class ECHO_resource(Folder,Persistent):
def getTitle(self):
"""title"""
- return self.title.decode('utf-8','ignore')
-
+ try:
+ return self.title.encode('utf-8','ignore')
+ except:
+ self.title=self.title.decode('iso-8859-1','ignore')[0:] #correnct conding error
+ return self.title.encode('utf-8','ignore')
+
def getLabel(self):
"""title"""
- return self.label.decode('utf-8','ignore')
-
+ try:
+ return self.label.encode('utf-8','ignore')
+ except:
+ self.label=self.label.decode('iso-8859-1','ignore')[0:] #correnct conding error
+ return self.label.encode('utf-8','ignore')
+
def content_html(self):
"""template fuer content"""
return content_html(self,'resource')
@@ -608,8 +771,9 @@ class ECHO_resource(Folder,Persistent):
texttools=dom.getElementsByTagName('texttool')
text=texttools[0].getElementsByTagName('text')
texturl=getText(text[0].childNodes)
- self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
+
if not noredirect:
+ self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
self.REQUEST.RESPONSE.redirect(texturl)
else:
return texturl
@@ -753,7 +917,8 @@ class ECHO_resource(Folder,Persistent):
self.contentType=self.bib_type
for data in self.metadata:
data_neu=re.sub('-','_',data)
- self.metaDataHash[data_neu]=getattr(self,data)[0:]
+ self.meta
+ DataHash[data_neu]=getattr(self,data)[0:]
pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self)
@@ -1077,11 +1242,12 @@ class ECHO_resource(Folder,Persistent):
if RESPONSE:
return RESPONSE.redirect('manage_main')
- def ECHO_getResourceMD(self,template="yes"):
+ def ECHO_getResourceMD(self,template="yes",back=None):
"""Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
(metadict, error)=readMetadata(self.metalink)
-
+ if back:
+ self.REQUEST.SESSION['back']=back
if not error=="": #Fehler beim Auslesen des Metafiles
return "ERROR:",error
@@ -1147,6 +1313,7 @@ class ECHO_resource(Folder,Persistent):
security.declarePublic('generate_label') # has to be change, presentlyset because of OSAS koordination
+
def generate_label(self):
"""Erzeugt_standard_Label aus Template"""
pt=getattr(self,"label_template_"+self.contentType.lower())
@@ -1155,6 +1322,7 @@ class ECHO_resource(Folder,Persistent):
return pt()
security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination
+
def generate_title(self,RESPONSE=None):
"""Erzeugt_standard_Label aus Template"""
pt=getattr(self,"label_template_"+self.contentType.lower())
@@ -1190,11 +1358,19 @@ class ECHO_externalLink(Folder):
def getTitle(self):
"""title"""
- return self.title.encode('utf-8')
-
+ try:
+ return self.title.encode('utf-8','ignore')
+ except:
+ self.title=self.title.decode('iso-8859-1','ignore')[0:] #correnct conding error
+ return self.title.encode('utf-8','ignore')
+
def getLabel(self):
"""title"""
- return self.label.encode('utf-8')
+ try:
+ return self.label.encode('utf-8','ignore')
+ except:
+ self.label=self.label.decode('iso-8859-1','ignore')[0:] #correnct conding error
+ return self.label.encode('utf-8','ignore')
def content_html(self):
"""template fuer content"""
@@ -1312,7 +1488,102 @@ class ECHO_collection(Folder, Persistent
displayTypes=displayTypes
path="/mpiwg/online/permanent/shipbuilding"
-
+
+ def showRDF(self):
+ """showrdf"""
+ self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
+ ret="""
"+label+"
" manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","") return ret + def getImageTag(self): """GetTag""" try: @@ -1670,7 +1948,7 @@ class ECHO_collection(Folder, Persistent security.declarePublic('ECHO_rerenderLinksMD') - def ECHO_rerenderLinksMD(self,obj=None): + def ECHO_rerenderLinksMD(self,obj=None,types=['title','label']): """Rerender all Links""" ret="" @@ -1683,9 +1961,11 @@ class ECHO_collection(Folder, Persistent if entry[1].meta_type == 'ECHO_resource': try: entry[1].ECHO_getResourceMD(template="no") - entry[1].generate_title() - entry[1].generate_label() - ret+="OK:"+entry[0]+"-- "+entry[1].getLabel().decode('utf-8')+"-- "+entry[1].getTitle().decode('utf-8')+"