--- ECHO_content/ECHO_collection.py 2009/04/14 16:31:27 1.304
+++ ECHO_content/ECHO_collection.py 2011/10/13 07:48:27 1.310.2.1
@@ -9,11 +9,7 @@ class ECHO_externalLink contains informa
"""
-try:
- from reportlab.pdfgen import canvas
- from reportlab.lib.pagesizes import A4
-except:
- print "PDF generation will not work"
+
import urlparse
import string
@@ -49,14 +45,15 @@ import urllib2
import cgi
import smtplib
import time
-from Ft.Xml.Domlette import NonvalidatingReader
-from Ft.Xml.Domlette import PrettyPrint, Print
-from Ft.Xml import EMPTY_NAMESPACE
-
-import Ft.Xml.XPath
+#from Ft.Xml.Domlette import NonvalidatingReader
+#from Ft.Xml.Domlette import PrettyPrint, Print
+#from Ft.Xml import EMPTY_NAMESPACE
+#
+#import Ft.Xml.XPath
import cStringIO
import sys
+import logging
try:
from psycopg import libpq
@@ -380,7 +377,7 @@ class ECHO_fullText(ZopePageTemplate,ECH
try:
dom=xml.dom.minidom.parseString(self())
except:
- dom=xml.dom.minidom.parseString(self().encode('latin-1'))
+ dom=xml.dom.minidom.parseString(self.utf8ify(self()))
pages=dom.getElementsByTagName('page')
return pages[int(nr)-1].toxml()
@@ -701,6 +698,39 @@ class ECHO_collection(CatalogAware, Fold
path="/mpiwg/online/permanent/shipbuilding"
+ def getSection(self, crumbs=None):
+ """returns the current section name"""
+ # use breadcrumbs if available
+ if crumbs is not None and len(crumbs) > 0:
+ return crumbs[0][2].getId()
+
+ p = self
+
+ sec = None
+ # descend parents to the root (and remember the last id)
+ while p is not None and p.meta_type != 'ECHO_root' and p.meta_type!='ECHO_main' and p.meta_type!='ECHO_nav':
+ sec = p.getId()
+ p = p.aq_parent
+
+ return sec
+
+ def getSubSection(self, crumbs=None):
+ """returns the current subsection name"""
+ # use breadcrumbs if available
+ if crumbs is not None and len(crumbs) > 1:
+ return crumbs[1][2].getId()
+
+ p = self
+ sec = None
+ subsec = None
+ # descend parents to the root (and remember the last id)
+ while p is not None and p.meta_type != 'ECHO_root' and p.meta_type!='ECHO_main' and p.meta_type!='ECHO_nav':
+ subsec = sec
+ sec = p.getId()
+ p = p.aq_parent
+
+ return subsec
+
def exportImportObjects_html(self,RESPONSE):
"""ImportObject"""
@@ -856,20 +886,24 @@ class ECHO_collection(CatalogAware, Fold
if not urn:
urn=self.absolute_url()
- li="""\n"""
+ li="""\n"""
for content in contents:
try:
ret+=content[1].getRDF()+"\n"
except:
- logging.error("getRDF: "+repr(content[1].getRDF()))
- ret+=self.unicodify(content[1].getRDF())+"\n"
- ret+="""\n"""%urn
+ logging.error("getrdf: "+repr(content[1].getRDF()))
+ try:
+ ret+=self.unicodify(content[1].getRDF())+"\n"
+ except:
+ logging.error("--still cannot do it")
+ ret+=repr(content[1].getRDF())+"\n"
+ ret+="""\n"""%urn
for content in contents:
nurn=content[1].absolute_url()
ret+=li%nurn
- return ret+""
+ return ret+""
@@ -999,7 +1033,7 @@ class ECHO_collection(CatalogAware, Fold
pass
return ret
- def importCollection(self,path=None,RESPONSE=None):
+ def importCollection(self,path=None,viewerUrl=None,metaDataUrl=None,replacePathPermanent=None,replacePathExperimental=None,RESPONSE=None):
"""liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner"""
if path is None:
@@ -1012,15 +1046,20 @@ class ECHO_collection(CatalogAware, Fold
if fileName:
- tempPath=re.sub("/mpiwg/online","",path)
- link="http://echo.mpiwg-berlin.mpg.de/zogilib_book?fn="+tempPath+"/"+fileName+"/pageimg"
+ if (replacePathExperimental and replacePathExperimental!=''):
+ path=re.sub(replacePathExperimental,"/mpiwg/online/experimental",path)
+
+ if (replacePathPermanent and replacePathPermanent!=''):
+ path=re.sub(replacePathPermanent,"/mpiwg/online/permanent",path)
+
+ link=viewerUrl%(path+"/"+fileName+"/pageimg")
- metalink=self.path+"/"+fileName+"/index.meta"
+ metalink=metaDataUrl+"/"+path+"/"+fileName+"/index.meta"
try:
#link="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir="+fileName+"&step=thumb"
- newObj=ECHO_resource(fileName,link,metalink,fileName,fileName,fileName,'generated','book','','','','','','')
+ newObj=ECHO_resource(fileName,link,metalink,fileName,fileName,fileName,'','book','','','','','','')
self._setObject(fileName,newObj)
genObj=getattr(self,fileName)
@@ -1104,25 +1143,7 @@ class ECHO_collection(CatalogAware, Fold
RESPONSE.redirect('manage_main')
- def setStartpageFolderForm(self):
- """Form for changing the startpage"""
-
- pt=zptFile(self, 'zpt/ChangeECHO_resourceStartPageFolder.zpt')
- pt.content_type="text/html"
- return pt()
-
- def setStartpageFolder(self,startpage=None,RESPONSE=None):
- """change the templates"""
-
- resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
-
- for resource in resources:
-
- resource[1].setStartPage(startpage)
-
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
def copyTitleToInfoXMLFolder(self,RESPONSE=None):
"""copy title into the title field of info.xml
@@ -1157,17 +1178,7 @@ class ECHO_collection(CatalogAware, Fold
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
- def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
- """warning"""
- pt=zptFile(self, 'zpt/reloadMetaDataFromStorageWarning.zpt')
- pt.content_type="text/html"
- return pt()
-
- def reloadMetaDataFromStorage(self,RESPONSE=None):
- """copy metadata from the storage to ECHO"""
-
- return reloadMetaDataFromStorage(self,RESPONSE)
-
+
def getPartnerCopyright(self,name,sonst="generic"):
"""gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung"""
@@ -1400,11 +1411,8 @@ class ECHO_collection(CatalogAware, Fold
{'label':'Export/Import Objects','action':'exportImportObjects_html'},
{'label':'Graphic Coords','action':'ECHO_graphicEntry'},
{'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
- {'label':'Set Startpage','action':'setStartpageFolderForm'},
{'label':'Change Viewer Templates and Image Viewer','action':'changeViewerTemplateSetsForm'},
- {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
{'label':'ImportCollection','action':'importCollection'},
- {'label':'Copy MD for indexing and search','action':'copySearchFields'},
{'label':'Change access rights', 'action':'changeAccessRightsCollectionForm'},
)
@@ -1617,17 +1625,17 @@ class ECHO_group(ECHO_collection):
if not urn:
urn=self.absolute_url()
- li="""\n"""
+ li="""\n"""
for content in contents:
- ret+=content[1].getRDF()+"\n"
+ ret+=self.unicodify(content[1].getRDF())+"\n"
- ret+="""\n"""%urn
+ ret+="""\n"""%urn
for content in contents:
nurn=content[1].absolute_url()
ret+=li%nurn
- return ret+""
+ return ret+""
def index_html(self):
"""standard page"""
@@ -1811,7 +1819,8 @@ class ECHO_userFolder(UserFolder):
return 1
return 0
-Globals.default__class_init__(ECHO_userFolder)
+# ROC: problem with 2.12
+#Globals.default__class_init__(ECHO_userFolder)
@@ -1878,12 +1887,12 @@ class ECHO_root(Folder,Persistent,Implic
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 getECHORootURL(self):
@@ -1892,16 +1901,7 @@ class ECHO_root(Folder,Persistent,Implic
def getECHORoot(self):
return self
- 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):
"""re.sub aus mod re zur Verfuegung stellen"""
@@ -2062,8 +2062,8 @@ class ECHO_root(Folder,Persistent,Implic
global key
global value
seq=""
- if name=="RDF:Seq":
- key=attrs.get('RDF:about')
+ if name=="rdf:Seq":
+ key=attrs.get('rdf:about')
try: # teste ob liste
x=seqs[key][0]
except:
@@ -2071,20 +2071,20 @@ class ECHO_root(Folder,Persistent,Implic
seqs[key]=[]
- elif name=="RDF:Description":
- key=attrs.get('RDF:about')
+ elif name=="rdf:Description":
+ key=attrs.get('rdf:about')
- elif name=="RDF:li":
- name=attrs.get('RDF:resource')
+ elif name=="rdf:li":
+ name=attrs.get('rdf:resource')
seqs[key].append(name)
- elif name=="ECHONAVIGATION:type":
+ elif name=="echonavigation:type":
value="type"
- elif name=="ECHONAVIGATION:name":
+ elif name=="echonavigation:name":
value="name"
- elif name=="ECHONAVIGATION:linkClickable":
+ elif name=="echonavigation:linkClickable":
value="linkClickable"
def end_element(name):
@@ -2146,17 +2146,6 @@ class ECHO_root(Folder,Persistent,Implic
pt.content_type="text/html"
return pt()
-
- def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
- """warning"""
- pt=zptFile(self, 'zpt/reloadMetaDataFromStorageWarning.zpt')
- pt.content_type="text/html"
- return pt()
-
- def reloadMetaDataFromStorage(self,RESPONSE=None):
- """reload MD from Storage"""
-
- return reloadMetaDataFromStorage(self,RESPONSE)
def getRDF(self,urn=None):
"""rdf of the collection"""
@@ -2165,17 +2154,17 @@ class ECHO_root(Folder,Persistent,Implic
ret=getRDFDescription(self,self.absolute_url(),urn=urn)
- li="""\n"""
+ li="""\n"""
for content in contents:
ret+=content[1].getRDF()+"\n"
- ret+="""\n"""%urn
+ ret+="""\n"""%urn
for content in contents:
nurn=content[1].absolute_url()
ret+=li%nurn
- return ret+""
+ return ret+""
def showContent(self,path):
@@ -3206,7 +3195,6 @@ class ECHO_main(ECHO_root,ECHO_navigatio
{'label':'Main Config','action':'ECHO_navigationConfigForm'},
{'label':'Cache','action':'ECHO_cacheManageForm'},
{'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'},