version 1.273, 2006/07/27 16:18:16
|
version 1.278, 2006/11/21 16:49:58
|
Line 18 except:
|
Line 18 except:
|
import urlparse |
import urlparse |
import string |
import string |
import tempfile |
import tempfile |
|
import zipfile |
import re |
import re |
import os |
import os,shutil |
import OFS.Image |
import OFS.Image |
from types import * |
from types import * |
from OFS.Cache import Cacheable |
from OFS.Cache import Cacheable |
Line 67 import urllib
|
Line 68 import urllib
|
import xml.dom.minidom |
import xml.dom.minidom |
import ECHO_helpers |
import ECHO_helpers |
from ECHO_helpers import * |
from ECHO_helpers import * |
|
|
|
try: |
from ECHO_language import * |
from ECHO_language import * |
|
except: |
|
print "no echo_language" |
|
class ECHO_language: |
|
""" leere Klasse""" |
|
pass |
|
|
from ECHO_movie import * |
from ECHO_movie import * |
import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen |
import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen |
import xmlrpclib |
import xmlrpclib |
|
|
|
|
|
|
|
|
|
def normalizeCt(str): |
|
"""normalizes content_type""" |
|
#str= str.replace(" ","_") |
|
return str.replace("-"," ").lower() |
|
|
def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""): |
def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""): |
|
|
"""Allegemeine Informationen zu einer ECHO Collection""" |
"""Allegemeine Informationen zu einer ECHO Collection""" |
Line 1090 class ECHO_resource(CatalogAware,Folder,
|
Line 1106 class ECHO_resource(CatalogAware,Folder,
|
|
|
def getContentType(self): |
def getContentType(self): |
try: |
try: |
return self.contentType |
return normalizeCt(self.contentType) |
except: |
except: |
return "" |
return "" |
|
|
Line 1205 class ECHO_resource(CatalogAware,Folder,
|
Line 1221 class ECHO_resource(CatalogAware,Folder,
|
|
|
def changeECHO_resource_metadata_local(self,RESPONSE=None): |
def changeECHO_resource_metadata_local(self,RESPONSE=None): |
"""change metadata""" |
"""change metadata""" |
tags=self.findTagsFromMapping(self.contentType) |
tags=self.findTagsFromMapping(normalizeCt(self.contentType)) |
for field in tags[1]: |
for field in tags[1]: |
self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:] |
self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:] |
|
|
Line 1216 class ECHO_resource(CatalogAware,Folder,
|
Line 1232 class ECHO_resource(CatalogAware,Folder,
|
|
|
def changeECHO_resource_metadata(self,RESPONSE=None): |
def changeECHO_resource_metadata(self,RESPONSE=None): |
"""change metadata""" |
"""change metadata""" |
tags=self.findTagsFromMapping(self.contentType) |
tags=self.findTagsFromMapping(normalizeCt(self.contentType)) |
self.OSAS_meta={} |
self.OSAS_meta={} |
for field in tags[1]: |
for field in tags[1]: |
try: |
try: |
Line 1262 class ECHO_resource(CatalogAware,Folder,
|
Line 1278 class ECHO_resource(CatalogAware,Folder,
|
if generic: |
if generic: |
if self.contentType: |
if self.contentType: |
ct=self.contentType.replace(" ","_").lower() |
ct=self.contentType.replace(" ","_").lower() |
|
ct=self.contentType.replace("-","_").lower() |
else: |
else: |
zLOG.LOG("ECHO_collection (getMDValue)", zLOG.INFO, "no_content type for %s"%self.getId()) |
zLOG.LOG("ECHO_collection (getMDValue)", zLOG.INFO, "no_content type for %s"%self.getId()) |
ct="" |
ct="" |
Line 1270 class ECHO_resource(CatalogAware,Folder,
|
Line 1287 class ECHO_resource(CatalogAware,Folder,
|
if not hasattr(self,'_v_mapHash'): #noch keine cachevariable |
if not hasattr(self,'_v_mapHash'): #noch keine cachevariable |
self._v_mapHash={} |
self._v_mapHash={} |
|
|
|
|
|
|
tmp=self._v_mapHash.get(ct,None) |
tmp=self._v_mapHash.get(ct,None) |
if tmp: #teste ob type schon existiert |
if tmp: #teste ob type schon existiert |
fieldName=tmp.get(fieldNameTest,None) |
fieldName=tmp.get(fieldNameTest,None) |
else: |
else: |
self._v_mapHash[ct]={} |
self._v_mapHash[ct]={} |
|
|
|
|
#noch nicht gecached |
#noch nicht gecached |
if not fieldName and hasattr(self.standardMD,ct): |
if not fieldName and hasattr(self.standardMD,ct): |
fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0] |
fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0] |
Line 1286 class ECHO_resource(CatalogAware,Folder,
|
Line 1306 class ECHO_resource(CatalogAware,Folder,
|
#FIXME: warum gibt es manchmal kein metadatahas |
#FIXME: warum gibt es manchmal kein metadatahas |
try: |
try: |
|
|
ret =self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) |
ret =self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%normalizeCt(self.contentType)) |
except: |
except: |
zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId()) |
zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId()) |
return "" |
return "" |
Line 1452 class ECHO_resource(CatalogAware,Folder,
|
Line 1472 class ECHO_resource(CatalogAware,Folder,
|
fields=[] |
fields=[] |
fieldlist=self.standardMD.fieldList |
fieldlist=self.standardMD.fieldList |
|
|
tags=self.findTagsFromMapping(self.contentType) |
tags=self.findTagsFromMapping(normalizeCt(self.contentType)) |
self.referencetypes=tags[2] |
self.referencetypes=tags[2] |
for referenceTypeF in self.referencetypes: |
for referenceTypeF in self.referencetypes: |
|
|
if referenceTypeF[1].title.lower() == referenceType.lower(): |
|
|
if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): |
|
|
try: |
try: |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields |
Line 1494 class ECHO_resource(CatalogAware,Folder,
|
Line 1515 class ECHO_resource(CatalogAware,Folder,
|
for referenceTypeF in temp: |
for referenceTypeF in temp: |
#print referenceType |
#print referenceType |
|
|
if referenceTypeF[1].title.lower() == referenceType.lower(): |
if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): |
try: |
try: |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields |
referenceType=referenceTypeF[1].title |
referenceType=referenceTypeF[1].title |
Line 1521 class ECHO_resource(CatalogAware,Folder,
|
Line 1542 class ECHO_resource(CatalogAware,Folder,
|
|
|
return "ERROR:",error,self.absolute_url() |
return "ERROR:",error,self.absolute_url() |
|
|
self.contentType=metadict['bib_type'][0:] |
self.contentType=normalizeCt(metadict['bib_type'])[0:] |
fields=self.findTagsFromMapping(self.contentType) |
fields=self.findTagsFromMapping(normalizeCt(self.contentType)) |
|
|
#fields=self.findLabelsFromMapping(self.contentType) |
#fields=self.findLabelsFromMapping(normalizeCt(self.contentType)) |
for field in fields[1]: |
for field in fields[1]: |
|
|
if self.isDefinedInThisSet(fields,field): |
if self.isDefinedInThisSet(fields,field): |
Line 1536 class ECHO_resource(CatalogAware,Folder,
|
Line 1557 class ECHO_resource(CatalogAware,Folder,
|
if RESPONSE: |
if RESPONSE: |
return RESPONSE.redirect('manage_main') |
return RESPONSE.redirect('manage_main') |
|
|
return "OK:",self.absolute_url(),self.contentType |
return "OK:",self.absolute_url(),normalizeCt(self.contentType) |
|
|
def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"): |
def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"): |
"""Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" |
"""Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" |
Line 1549 class ECHO_resource(CatalogAware,Folder,
|
Line 1570 class ECHO_resource(CatalogAware,Folder,
|
return "ERROR:",error |
return "ERROR:",error |
|
|
if (not self.contentType) or (overwrite=="yes"): |
if (not self.contentType) or (overwrite=="yes"): |
self.contentType=metadict['bib_type'].lower() |
self.contentType=normalizeCt(normalizeCt(metadict['bib_type']).lower()) |
|
|
if not (metadict['bib_type'].lower()==self.contentType.lower()): |
if not (normalizeCt(metadict['bib_type']).lower()==normalizeCt(self.contentType).lower()): |
self.REQUEST.SESSION['contentStorage']=metadict['bib_type'] |
self.REQUEST.SESSION['contentStorage']=normalizeCt(metadict['bib_type']) |
self.REQUEST.SESSION['contentZope']=self.contentType |
self.REQUEST.SESSION['contentZope']=normalizeCt(self.contentType) |
|
|
return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')() |
return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')() |
|
|
Line 1634 class ECHO_resource(CatalogAware,Folder,
|
Line 1655 class ECHO_resource(CatalogAware,Folder,
|
|
|
def generate_label(self): |
def generate_label(self): |
"""Erzeugt_standard_Label aus Template""" |
"""Erzeugt_standard_Label aus Template""" |
pt=getattr(self,"label_template_"+self.contentType.lower()) |
pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower()) |
|
|
self.label=pt()[0:] |
self.label=pt()[0:] |
return pt() |
return pt() |
Line 1643 class ECHO_resource(CatalogAware,Folder,
|
Line 1664 class ECHO_resource(CatalogAware,Folder,
|
|
|
def generate_title(self,RESPONSE=None): |
def generate_title(self,RESPONSE=None): |
"""Erzeugt_standard_Label aus Template""" |
"""Erzeugt_standard_Label aus Template""" |
pt=getattr(self,"label_template_"+self.contentType.lower()) |
pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower()) |
|
|
self.title=pt()[0:] |
self.title=pt()[0:] |
|
|
Line 1920 class ECHO_collection(CatalogAware, Fold
|
Line 1941 class ECHO_collection(CatalogAware, Fold
|
|
|
path="/mpiwg/online/permanent/shipbuilding" |
path="/mpiwg/online/permanent/shipbuilding" |
|
|
|
|
|
def exportImportObjects_html(self,RESPONSE): |
|
"""ImportObject""" |
|
pt=zptFile(self, 'zpt/exportImportObjects.zpt') |
|
pt.content_type="text/html" |
|
return pt() |
|
|
|
def importObjects_html(self,RESPONSE): |
|
"""ImportObject""" |
|
pt=zptFile(self, 'zpt/importObjects.zpt') |
|
pt.content_type="text/html" |
|
return pt() |
|
|
|
def importObjects(self,zfile,RESPONSE=None,REQUEST=None): |
|
"""import object from file""" |
|
|
|
zf=zipfile.ZipFile(zfile,"r") |
|
tmpdir=tempfile.mkdtemp() # create tempdir |
|
ret=None |
|
|
|
for name in zf.namelist(): |
|
fn=tempfile.mkstemp()[1] |
|
tf=file(fn,"w") |
|
x=zf.read(name) |
|
tf.write(x) |
|
tf.close() |
|
try: |
|
self._importObjectFromFile(fn,set_owner=1) |
|
except: |
|
if not ret: |
|
ret="" |
|
ret+="Cannot import: %s (Already existing?)<br>"%name |
|
os.remove(fn) |
|
|
|
if ret: |
|
return """<html><body>%s</body></html>"""%ret |
|
if RESPONSE: |
|
RESPONSE.redirect(self.absolute_url()) |
|
|
|
def exportObjects_html(self,RESPONSE): |
|
"""Export objects""" |
|
|
|
pt=zptFile(self, 'zpt/exportObjects.zpt') |
|
pt.content_type="text/html" |
|
return pt() |
|
|
|
def exportObjects(self,ids,RESPONSE=None): |
|
"""export objects with type id""" |
|
if not (type(ids) is ListType): |
|
ids=[ids] |
|
|
|
tmpdir=tempfile.mkdtemp() # create tempdir |
|
objs=self.ZopeFind(self,obj_ids=ids) |
|
tmpfile=tempfile.mkstemp()[1] |
|
|
|
zf=zipfile.ZipFile(tmpfile,"w") |
|
for obj in objs: |
|
|
|
f = os.path.join(tmpdir, '%s.zexp' %obj[0]) |
|
#print E.absolute_url() |
|
|
|
obj[1]._p_jar.exportFile(obj[1]._p_oid, f) |
|
|
|
zf.write(f,obj[0]) |
|
|
|
zf.close() |
|
shutil.rmtree(tmpdir) |
|
if RESPONSE: |
|
RESPONSE.setHeader("Content-Type","application/octet-stream") |
|
len=os.stat(tmpfile)[6] |
|
RESPONSE.setHeader("Content-Length",len) |
|
RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%"export.zip") |
|
fh=file(tmpfile) |
|
for x in fh.read(): |
|
RESPONSE.write(x) |
|
fh.close() |
|
|
def getMDValueSimpleSearchField(self): |
def getMDValueSimpleSearchField(self): |
"""returns value for simple search""" |
"""returns value for simple search""" |
return " ".join([self.title,self.description]) |
return " ".join([self.title,self.description]) |
Line 2332 class ECHO_collection(CatalogAware, Fold
|
Line 2430 class ECHO_collection(CatalogAware, Fold
|
for resource in dom.getElementsByTagName('resource'): |
for resource in dom.getElementsByTagName('resource'): |
link=getText(resource.getElementsByTagName('link')[0].childNodes) |
link=getText(resource.getElementsByTagName('link')[0].childNodes) |
label=getText(resource.getElementsByTagName('label')[0].childNodes) |
label=getText(resource.getElementsByTagName('label')[0].childNodes) |
|
pageimglink=getText(resource.getElementsByTagName('pageimglink')[0].childNodes) |
#splitted=link.split("?")[0].split("/") |
#splitted=link.split("?")[0].split("/") |
#id=splitted[len(splitted)-1].encode('ascii') |
#id=splitted[len(splitted)-1].encode('ascii') |
id=re.sub(" ","_",label).encode('ascii') |
id=re.sub(" ","_",label).encode('ascii') |
|
|
ret+="<p>"+label+"</p>" |
ret+="<p>"+label+"</p>" |
manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","") |
manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","",pageimglink.encode('ascii'),link.encode('ascii'),"","") |
return ret |
return ret |
|
|
security.declarePublic('getImageTag') |
security.declarePublic('getImageTag') |
Line 2493 class ECHO_collection(CatalogAware, Fold
|
Line 2592 class ECHO_collection(CatalogAware, Fold
|
{'label':'Localize','action':'localizeObjects'}, |
{'label':'Localize','action':'localizeObjects'}, |
{'label':'Change Weights','action':'changeWeights'}, |
{'label':'Change Weights','action':'changeWeights'}, |
{'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'}, |
{'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'}, |
|
{'label':'Export/Import Objects','action':'exportImportObjects_html'}, |
{'label':'Graphic Coords','action':'ECHO_graphicEntry'}, |
{'label':'Graphic Coords','action':'ECHO_graphicEntry'}, |
{'label':'create resources from XML','action':'createRessourcesFromXMLForm'}, |
{'label':'create resources from XML','action':'createRessourcesFromXMLForm'}, |
{'label':'Set Startpage','action':'setStartpageFolderForm'}, |
{'label':'Set Startpage','action':'setStartpageFolderForm'}, |
Line 3545 class ECHO_root(Folder,Persistent,Implic
|
Line 3645 class ECHO_root(Folder,Persistent,Implic
|
return "" |
return "" |
|
|
link2html=vlp_xmlhelpers.link2html |
link2html=vlp_xmlhelpers.link2html |
|
related2html=vlp_xmlhelpers.related2html |
|
|
xml2html=vlp_xmlhelpers.xml2html |
xml2html=vlp_xmlhelpers.xml2html |
|
|
Line 3901 class ECHO_linkList(ZopePageTemplate,ECH
|
Line 4002 class ECHO_linkList(ZopePageTemplate,ECH
|
def getcontentType(self): |
def getcontentType(self): |
"""get contentType""" |
"""get contentType""" |
if hasattr(self,'contentType'): |
if hasattr(self,'contentType'): |
return self.contentType |
return normalizeCt(self.contentType) |
else: |
else: |
return 0 |
return 0 |
|
|