--- ECHO_content/ECHO_collection.py 2004/06/22 08:49:00 1.124
+++ ECHO_content/ECHO_collection.py 2004/07/08 15:23:20 1.136
@@ -184,10 +184,12 @@ 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):
- print dom,tag,value
+ #print dom,tag,value
metanode=dom.getElementsByTagName('texttool')[0]
try:
nodeOld=metanode.getElementsByTagName(tag)
@@ -484,28 +486,175 @@ class ECHO_resource(Folder,Persistent):
getSubCols = ECHO_helpers.getSubCols
+ def getAccessRightSelectorHTML(self,outlook="select"):
+ """htmlselector"""
+ values=['free','mpiwg']
+
+ if outlook=="select":
+ ret=""""
+
+ else:
+ ret=""
+ for value in values:
+ print
+ if value==self.getAccessRightMD():
+ ret+="""%s"""%(self.getId(),value,value)
+ else:
+ ret+="""%s"""%(self.getId(),value,value)
+ return ret
+
+
+
+ def getAccessRightMD(self):
+ """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)
+
+ 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"""
+
+
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resourceStartPage.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
+
def setStartPage(self,startpage=None,RESPONSE=None):
"""set start page, if no startpage defined use the generic one of the resource"""
- if not startpage:
+ if (not (type(startpage)==StringType)) and ("__generic" in startpage): # checke ob generic in der liste
startpage=self.absolute_url()+"/startpage_html"
-
+
+ if (not startpage) or (startpage=="__generic"):
+ startpage=self.absolute_url()+"/startpage_html"
params="startpage=%s"%startpage
-
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()+'/newMetaXML'+urllib.quote('?'+params))).read()
-
+
+
path=self.metalink
+ 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('/index.meta','',path)
- print urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
+ urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
@@ -540,7 +689,7 @@ class ECHO_resource(Folder,Persistent):
paramList=['project','startpage','xslt','thumbtemplate','topbar','digiLibTemplate']
- #print writeMetadata(self.metalink,self.metaDataHash,project,startpage,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)
@@ -550,13 +699,19 @@ class ECHO_resource(Folder,Persistent):
# hack Pfad auf die Dokumente
path=self.metalink
- 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('/index.meta','',path)
+ path=re.sub(self.REQUEST['SERVER_URL'],'',path)
+ path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path)
- print urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
+ 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
+
+
+ return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
@@ -564,12 +719,20 @@ class ECHO_resource(Folder,Persistent):
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"""
return content_html(self,'resource')
@@ -602,10 +765,10 @@ class ECHO_resource(Folder,Persistent):
return "
"
+ except:
+ print "ERROR"
+ ret+="ERROR:"+fileName+"
"
+
+ return ret
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+ def updateCollectionMD(self,RESPONSE=None):
+ """updateMD"""
+ files=os.listdir(self.path)
+ for fileName in files:
+ if fileName:
+ genObj=getattr(self,fileName)
+ genObj.copyIndex_meta2echo_resource()
+ genObj.generate_title()
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+
def changeViewerTemplateSetsForm(self):
"""change the viewer template set"""
@@ -1319,13 +1610,38 @@ class ECHO_collection(Folder, Persistent
resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
for resource in resources:
- print resource[0]
+
resource[1].changeViewerTemplateSet(project,xslt,thumbtemplate,topbar,digiLibTemplate)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+ def copySearchFields(self,RESPONSE=None):
+ """copys import metadatafields to the object"""
+ resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
+
+ for resource in resources:
+
+ resource[1].copySearchFields()
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+ def reloadMetaDataFromStorage(self,RESPONSE=None):
+ """copy metadata from the storage to ECHO"""
+ ret=""
+ resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
+
+ for resource in resources:
+
+ ret+=str(resource[1].copyIndex_meta2echo_resource())+"
"
+
+
+ if RESPONSE is not None:
+ # RESPONSE.redirect('manage_main')
+ return ret
+
def getPartnerCopyright(self,name,sonst="generic"):
"""gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung"""
#print "hi",name,sonst
@@ -1362,14 +1678,20 @@ class ECHO_collection(Folder, Persistent
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 createRessourcesFromXMLForm(self):
"""form"""
pt=PageTemplateFile('Products/ECHO_content/zpt/createRessourcesFromXMLForm.zpt').__of__(self)
@@ -1389,6 +1711,7 @@ class ECHO_collection(Folder, Persistent
ret+="
"+label+"
" manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","") return ret + def getImageTag(self): """GetTag""" try: @@ -1566,8 +1889,10 @@ 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="" + if not obj: obj = self @@ -1575,16 +1900,22 @@ class ECHO_collection(Folder, Persistent for entry in entries: if entry[1].meta_type == 'ECHO_resource': - entry[1].ECHO_getResourceMD(template="no") - entry[1].generate_title() - entry[1].generate_label() + try: + entry[1].ECHO_getResourceMD(template="no") + if "title" in types: + entry[1].generate_title() + if "label" in types: + entry[1].generate_label() + ret+="OK:"+entry[0]+"-- "+entry[1].getTitle().decode('utf-8')+"-- "+entry[1].getTitle().decode('utf-8')+"