--- ECHO_content/ECHO_collection.py 2011/10/13 07:48:27 1.310.2.1
+++ ECHO_content/ECHO_collection.py 2012/01/16 16:53:18 1.315
@@ -9,7 +9,11 @@ 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
@@ -17,6 +21,7 @@ import tempfile
import zipfile
import re
import os,shutil
+import traceback
import OFS.Image
from types import *
from OFS.Cache import Cacheable
@@ -45,11 +50,11 @@ 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
@@ -913,6 +918,12 @@ class ECHO_collection(CatalogAware, Fold
pt.content_type="text/html"
return pt()
+ def changeMetaLinks(self):
+ """change form"""
+ pt=zptFile(self, 'zpt/changeMetaLinkForm')
+ pt.content_type="text/html"
+ return pt()
+
def changeTitles(self):
"""change form"""
pt=zptFile(self, 'zpt/changeTitleForm')
@@ -1032,19 +1043,53 @@ class ECHO_collection(CatalogAware, Fold
except:
pass
return ret
+
+ def changeMetaLinksInCollection(self):
+ """change all lables of a collection"""
+ ret=""
+ argv=self.REQUEST.form
+
+ resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink'])
+ for resource in resources:
+
+ try:
+ ret+=resource[1].getId()+" "+argv[resource[1].getId()]+""
+ resource[1].metalink=argv[resource[1].getId()][0:]
+ except:
+ pass
+ return ret
- def importCollection(self,path=None,viewerUrl=None,metaDataUrl=None,replacePathPermanent=None,replacePathExperimental=None,RESPONSE=None):
+ def importCollection(self,path=None,viewerUrl=None,metaDataUrl=None,replacePathPermanent=None,replacePathExperimental=None,folderListFile=None,RESPONSE=None):
"""liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner"""
- if path is None:
+ if (path is None) & (folderListFile is None):
pt=zptFile(self, 'zpt/importCollection.zpt')
return pt()
- files=os.listdir(path)
+
+
+ if (path !=""):
+ files=os.listdir(path)
+ pathToFolder=path;
+ else:
+ pathToFolder="";
+ files=[];
+ for fileLine in folderListFile.readlines():
+ for fileLine2 in fileLine.split("\r"):
+ logging.debug("append:"+fileLine2)
+ files.append(fileLine2)
+
ret=""
for fileName in files:
if fileName:
+ logging.debug("split:"+fileName);
+ if(pathToFolder==""): # pfad ist leer, da filename aud folderlistfile dann:
+ splitted=fileName.split("/");
+ path="/".join(splitted[0:-1]);
+ fileName=splitted[-1].rstrip().lstrip();
+
+
if (replacePathExperimental and replacePathExperimental!=''):
path=re.sub(replacePathExperimental,"/mpiwg/online/experimental",path)
@@ -1054,20 +1099,38 @@ class ECHO_collection(CatalogAware, Fold
link=viewerUrl%(path+"/"+fileName+"/pageimg")
- 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,'','book','','','','','','')
- self._setObject(fileName,newObj)
+ metalink=metaDataUrl+re.sub("/mpiwg/online/","",path+"/"+fileName+"/index.meta")
+
+ #metalink=metaDataUrl+"/"+path+"/"+fileName+"/index.meta"
- genObj=getattr(self,fileName)
- #genObj.createIndexFile()
- ret+="OK:"+fileName+"
"
+ newindexMeta =re.sub("/mpiwg/online/","",path+"/"+fileName)
+
+ try:
+ type=self.metadata.getBibTypeFromIndexMeta(newindexMeta)
+
+ try:
+
+ #link="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir="+fileName+"&step=thumb"
+ logging.debug("create:"+fileName);
+ logging.debug("type:"+type);
+ newObj=ECHO_resource(fileName,link,metalink,fileName,fileName,fileName,'',type,'','','','','','')
+ self._setObject(fileName,newObj)
+
+ genObj=getattr(self,fileName)
+ #genObj.createIndexFile()
+ ret+="OK:"+fileName+"
"
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info();
+ #logging.error("%s %s %s"%[sys.exc_info()[0],ssys.exc_info()[1],;
+ traceback.print_exception(exc_type, exc_value, exc_traceback,
+ limit=2, file=sys.stdout)
+ ret+="ERROR:"+fileName+"
"
except:
- print "ERROR"
- ret+="ERROR:"+fileName+"
"
+ exc_type, exc_value, exc_traceback = sys.exc_info();
+ #logging.error("%s %s %s"%[sys.exc_info()[0],ssys.exc_info()[1],;
+ traceback.print_exception(exc_type, exc_value, exc_traceback,
+ limit=2, file=sys.stdout)
+ ret+="not a file ERROR:"+fileName+"
"
return ret
@@ -1116,35 +1179,42 @@ class ECHO_collection(CatalogAware, Fold
RESPONSE.write("
OK: %s"%resource[0]) - else: - if RESPONSE is not None: - RESPONSE.write("
ERROR: %s (%s)"%(resource[1].absolute_url()+'/ECHO_resource_config_main',resource[0],msg)) + resource[1].newViewer=newViewer; + +# done,msg=resource[1].changeViewer(newViewer) +# if done: +# if RESPONSE is not None: +# RESPONSE.write("
OK: %s"%resource[0]) +# else: +# if RESPONSE is not None: +# RESPONSE.write("
ERROR: %s (%s)"%(resource[1].absolute_url()+'/ECHO_resource_config_main',resource[0],msg)) if RESPONSE is not None: RESPONSE.write("
Done
") - def changeViewerTemplateSets(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix,RESPONSE=None): + + 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].changeViewerTemplateSet(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix) + 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 author and date werden leer!!! @@ -1178,7 +1248,17 @@ 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""" @@ -1405,14 +1485,18 @@ class ECHO_collection(CatalogAware, Fold {'label':'Main Config','action':'ECHO_collection_config'}, {'label':'Change Labels','action':'changeLabels'}, {'label':'Change Titles','action':'changeTitles'}, + {'label':'Change MetaLinks','action':'changeMetaLinks'}, + {'label':'Change Image Viewer','action':'changeViewerTemplateSetsForm'}, {'label':'Localize','action':'localizeObjects'}, {'label':'Change Weights','action':'changeWeights'}, {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'}, {'label':'Export/Import Objects','action':'exportImportObjects_html'}, {'label':'Graphic Coords','action':'ECHO_graphicEntry'}, {'label':'create resources from XML','action':'createRessourcesFromXMLForm'}, - {'label':'Change Viewer Templates and Image Viewer','action':'changeViewerTemplateSetsForm'}, + {'label':'Set Startpage','action':'setStartpageFolderForm'}, + {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'}, {'label':'ImportCollection','action':'importCollection'}, + {'label':'Copy MD for indexing and search','action':'copySearchFields'}, {'label':'Change access rights', 'action':'changeAccessRightsCollectionForm'}, ) @@ -1440,7 +1524,7 @@ class ECHO_collection(CatalogAware, Fold security.declarePublic('changeECHO_collection') - def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None,prefix="",suffix="",isVisible=True): + def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None,prefix="",suffix="",isVisible=True,fullTextBasisUrl=None): """Aenderung der Properties""" self.secondaryLink=secondaryLink @@ -1452,6 +1536,7 @@ class ECHO_collection(CatalogAware, Fold self.prefix=prefix[0:] self.suffix=suffix[0:] self.setIsVisible(isVisible) + self.fullTextBasisUrl=fullTextBasisUrl setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight) @@ -1460,6 +1545,9 @@ class ECHO_collection(CatalogAware, Fold if RESPONSE is not None: RESPONSE.redirect('manage_main') + def getFullTextBasisUrl(self): + return self.fullTextBasisUrl + def setAlwaysClickable(self,flag="yes"): """set clickable""" if flag=="yes": @@ -1471,8 +1559,15 @@ class ECHO_collection(CatalogAware, Fold def showOverview(self): """overview""" + # ECHO_overview.html template for this instance if 'ECHO_overview.html' in self.__dict__.keys(): return getattr(self,'ECHO_overview.html')() + + # ECHO_overview_main template in path + if hasattr(self, 'ECHO_overview_main'): + return getattr(self, 'ECHO_overview_main')() + + # template from product pt=zptFile(self, 'zpt/ECHO_content_overview.zpt') return pt() @@ -1886,11 +1981,12 @@ class ECHO_root(Folder,Persistent,Implic getSubCols = ECHO_helpers.getSubCols 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'}, +) @@ -1901,7 +1997,16 @@ 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""" @@ -2146,6 +2251,17 @@ 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""" @@ -2231,7 +2347,7 @@ class ECHO_root(Folder,Persistent,Implic retStr+="""