--- ECHO_content/ECHO_movie.py 2005/03/17 19:27:34 1.3
+++ ECHO_content/ECHO_movie.py 2012/01/03 13:02:31 1.15
@@ -1,3 +1,4 @@
+
"""preliminary object for displaying movies as part of a collection, shall be exchanged by a generalized ressource object"""
import string
@@ -31,24 +32,22 @@ from Ft.Xml import EMPTY_NAMESPACE
import Ft.Xml.XPath
import cStringIO
-import zLOG
+import logging
try:
- from psycopg import libpq
+ from psycopg import libpq
except:
- try:
- from pyPgSQL import libpq
- except:
- print "ECHO_collection: Warning - No libpq imported!"
-
+ try:
+ from pyPgSQL import libpq
+ except:
+ print "ECHO_collection: Warning - No libpq imported!"
+
import xml.dom.minidom
import urllib
import xml.dom.minidom
import ECHO_helpers
from ECHO_helpers import *
-from ECHO_language import *
-
class ECHO_movie(Folder,Persistent,ECHO_basis):
"""ECHO Ressource"""
@@ -67,177 +66,254 @@ class ECHO_movie(Folder,Persistent,ECHO_
security.declareProtected('View','createPDF')
+ def linkHTTP(self):
+ """protokoll fuer link html"""
+
+ splitted=self.link.split(":")
+ if len(splitted)<2:
+ return self.link
+ else:
+ splitted[0]="http"
+
+ ret= ":".join(splitted)
+ ret=ret.replace("//einst1","//einst3")
+ return ret
+
+ def linkRTSP(self):
+ """protokoll fuer link html"""
+ splitted=self.link.split(":")
+ if len(splitted)<2:
+ return self.link
+ else:
+ splitted[0]="RTSP"
+
+ ret= ":".join(splitted)
+ ret=ret.replace("//einst3","//einst1")
+ return ret
+
+ def lowresHTTP(self):
+ """protokoll fuer link html"""
+ if getattr(self,"lowresFile","")=="":
+ return None
+
+ splitted=self.lowresFile.split(":")
+ if len(splitted)<2:
+ return self.lowresFile
+ else:
+ splitted[0]="http"
+
+ ret= ":".join(splitted)
+ ret=ret.replace("//einst1","//einst3")
+ return ret
+
+ def lowresRTSP(self):
+ """protokoll fuer link html"""
+ if getattr(self,"lowresFile","")=="":
+ return None
+
+ splitted=self.lowresFile.split(":")
+ if len(splitted)<2:
+ return self.lowresFile
+ else:
+ splitted[0]="RTSP"
+
+ ret= ":".join(splitted)
+ ret=ret.replace("//einst3","//einst1")
+ return ret
+
+
def getRDF(self,urn=None):
- """rdf"""
- ret=getRDFDescription(self,self.link,urn=urn)
- return ret+self.createSubElementRDF(urn=urn)
+
+ """rdf"""
+ #ret=getRDFDescription(self,self.link,urn=urn)
+ #return ret+self.createSubElementRDF(urn=urn)
+ if not urn:
+ urn=self.absolute_url()
+ ret=""
-
+ rettemp="""\n"""%urn
+
+ li="""\n"""
+ rettemp+=li%self.thumbUrl
+ rettemp+=li%self.metalink
+ rettemp+=li%self.rawFile
+ rettemp+=li%getattr(self,'lowresFile','')
+ rettemp+=li%self.link
+ rettemp+=""
+
+ rettemp+=getRDFDescription(self,self.thumbUrl,nameDef="thumb",typeName="thumb",urn=self.thumbUrl)
+ rettemp+=getRDFDescription(self,self.metalink,nameDef="metadata",typeName="ECHO_metaData",urn=self.metalink)
+ rettemp+=getRDFDescription(self,self.rawFile,nameDef="raw",typeName="raw_movie",urn=self.rawFile)
+ if not (getattr(self,'lowresFile','')==""):
+ rettemp+=getRDFDescription(self,self.lowresFile,nameDef="lores_movie",typeName="lores",urn=self.lowresFile)
+ rettemp+=getRDFDescription(self,self.link,nameDef="hires",typeName="hires_movie",urn=self.link)
+ return rettemp
+
def getAccessRightSelectorHTML(self,outlook="select"):
- """htmlselector"""
- values=['free','mpiwg']
-
- if outlook=="select":
- ret=""""
-
- else:
- ret=""
- for value in values:
-
- if value==self.getAccessRightMD():
- ret+="""%s"""%(self.getId(),value,value)
- else:
- ret+="""%s"""%(self.getId(),value,value)
- return ret
+ """htmlselector"""
+ values=['free','mpiwg']
+
+ if outlook=="select":
+ ret=""""
+
+ else:
+ ret=""
+ for value in values:
+
+ 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
+ """set accessright"""
+ url=self.metalink
- try:
- geturl=""
- for line in ECHO_helpers.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"
+ try:
+ geturl=""
+ for line in ECHO_helpers.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
+ return "free" #default free
def changeAccessRightMD(self,accessright,RESPONSE=None):
- """change the rights"""
-
- params="accessright=%s"%accessright
+ """change the rights"""
+
+ params="accessright=%s"%accessright
- #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
+ #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
-
- ECHO_helpers.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()
+
+ ECHO_helpers.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')
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
-
+
def setAccessRightXML(self,accessright):
- """set accessright"""
- url=self.metalink
+ """set accessright"""
+ url=self.metalink
- try:
- geturl=""
- for line in ECHO_helpers.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)
+ try:
+ geturl=""
+ for line in ECHO_helpers.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')
+ return dom.toxml().encode('utf-8')
def copyTitleToInfoXML(self,RESPONSE=None):
- """copy title from the resource"""
- presentationXML=readFieldFromXML(self.metalink,'texttool','presentation')
- resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')
- if (not presentationXML) or (not resourcepath):
- if RESPONSE:
- RESPONSE.write("Error: %s\n"%self.getId())
- else:
- return None,self.absolute_url()
-
- try:
- fh=file(os.path.join(resourcepath,presentationXML),'w')
- fh.write("""
-
- %s
-
- yes
- """%self.title)
- fh.close()
- return 1,self.getId()
- except:
- if RESPONSE:
- RESPONSE.write("Error: %s\n"%self.getId())
- else:
- return None,self.absolute_url()
+ """copy title from the resource"""
+ presentationXML=readFieldFromXML(self.metalink,'texttool','presentation')
+ resourcepath=readFieldFromXML_xpath(self.metalink,'//resource/archive-path')
+ if (not presentationXML) or (not resourcepath):
+ if RESPONSE:
+ RESPONSE.write("Error: %s\n"%self.getId())
+ else:
+ return None,self.absolute_url()
+
+ try:
+ fh=file(os.path.join(resourcepath,presentationXML),'w')
+ fh.write("""
+
+ %s
+
+ yes
+ """%self.title)
+ fh.close()
+ return 1,self.getId()
+ except:
+ if RESPONSE:
+ RESPONSE.write("Error: %s\n"%self.getId())
+ else:
+ return None,self.absolute_url()
- security.declarePublic('content_html')
+ security.declarePublic('content_html')
def content_html(self):
"""template fuer content"""
return ECHO_basis.content_html(self,'movie')
@@ -250,51 +326,51 @@ class ECHO_movie(Folder,Persistent,ECHO_
def getCopyrightsHTML(self):
- """gib (link auf copyright link, mediatyp, institution, copyrightType, label von copyrightType) aus"""
-
- if hasattr(self,'copyrightModel'):
- obj=self.copyrightModel
-
- else:
- return "ERROR"
- ret=[]
-
- for copyright in obj.getCopyrights(): #copyright - media / partner / copyrightID
-
-
- try:
- if hasattr(self.copyrightTypes,copyright[2]):
- copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
- link="copyrightTypes/"+copyright[2]+'/copyright.html'
- else:
- copyrightTypeObj=getattr(obj,copyright[2])
- link="copyrightModel/"+copyright[2]+'/copyright.html'
-
- label=copyrightTypeObj.label
- url=getattr(copyrightTypeObj, 'url', '')
-
- if url!='':
- ret.append((url,copyright[0],copyright[1],copyright[2],label))
- else:
- if hasattr(copyrightTypeObj, 'copyright.html'):
- ret.append(("""%s?partner=%s"""%(link,copyright[1]),copyright[0],copyright[1],copyright[2],label))
- else:
- ret.append(('empty',copyright[0],copyright[1],copyright[2],label))
- except:
- """nothing"""
-
- return ret
-
+ """gib (link auf copyright link, mediatyp, institution, copyrightType, label von copyrightType) aus"""
+
+ if hasattr(self,'copyrightModel'):
+ obj=self.copyrightModel
+
+ else:
+ return "ERROR"
+ ret=[]
+
+ for copyright in obj.getCopyrights(): #copyright - media / partner / copyrightID
+
+
+ try:
+ if hasattr(self.copyrightTypes,copyright[2]):
+ copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
+ link="copyrightTypes/"+copyright[2]+'/copyright.html'
+ else:
+ copyrightTypeObj=getattr(obj,copyright[2])
+ link="copyrightModel/"+copyright[2]+'/copyright.html'
+
+ label=copyrightTypeObj.label
+ url=getattr(copyrightTypeObj, 'url', '')
+
+ if url!='':
+ ret.append((url,copyright[0],copyright[1],copyright[2],label))
+ else:
+ if hasattr(copyrightTypeObj, 'copyright.html'):
+ ret.append(("""%s?partner=%s"""%(link,copyright[1]),copyright[0],copyright[1],copyright[2],label))
+ else:
+ ret.append(('empty',copyright[0],copyright[1],copyright[2],label))
+ except:
+ """nothing"""
+
+ return ret
+
def getInstitutionsHTML(self):
- """gibt Liste der foerdernden Institutionen aus"""
-
- if hasattr(self,'support'):
- obj=self.support
- ret=obj.getSupporter()
- return ret
- else:
- return ''
-
+ """gibt Liste der foerdernden Institutionen aus"""
+
+ if hasattr(self,'support'):
+ obj=self.support
+ ret=obj.getSupporter()
+ return ret
+ else:
+ return ''
+
def getCredits(self):
"""Ausgabe der credits"""
@@ -305,7 +381,7 @@ class ECHO_movie(Folder,Persistent,ECHO_
- def __init__(self,id,link,thumbUrl,rawFile,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords):
+ def __init__(self,id,link,thumbUrl,rawFile,lowresFile,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords):
self.id = id
"""Festlegen der ID"""
@@ -318,40 +394,41 @@ class ECHO_movie(Folder,Persistent,ECHO_
self.credits=toList(credits)
self.description=description
self.contentType=contentType
- self.copyrightType=copyrightType
- self.renderingType=renderingType
+ self.copyrightType=copyrightType
+ self.renderingType=renderingType
self.responsible=responsible
self.resourceID=resourceID
self.thumbUrl=thumbUrl
self.rawFile=rawFile
-
+ self.lowresFile=lowresFile
+
if coords:
coordsnew=[ string.split(x,",") for x in coords]
else:
coordsnew=[]
self.coords=coordsnew
-# self.viewClassification=""
+# self.viewClassification=""
def getContentType(self):
- try:
- return self.contentType
- except:
- return ""
+ try:
+ return self.contentType
+ except:
+ return ""
def getCopyrightType(self):
- try:
- return self.copyrightType
- except:
- return ""
+ try:
+ return self.copyrightType
+ except:
+ return ""
def getRenderingType(self):
- try:
- return self.renderingType
- except:
- return ""
+ try:
+ return self.renderingType
+ except:
+ return ""
def ECHO_movie_config(self):
"""Main configuration"""
@@ -382,34 +459,35 @@ class ECHO_movie(Folder,Persistent,ECHO_
def ECHO_resource_config_metadata(self):
"""Main configuration"""
- if (hasattr(self,'metadata')) and not (hasattr(self,'metaDataHash')):
- self.metaDataHash={}
- self.contentType=self.bib_type
- for data in self.metadata:
- data_neu=re.sub('-','_',data)
- self.meta
+ if (hasattr(self,'metadata')) and not (hasattr(self,'metaDataHash')):
+ self.metaDataHash={}
+ self.contentType=self.bib_type
+ for data in self.metadata:
+ data_neu=re.sub('-','_',data)
+ self.meta
DataHash[data_neu]=getattr(self,data)[0:]
-
+
pt=zptFile(self, 'zpt/ChangeECHO_resource_metadata.zpt')
return pt()
- def changeECHO_movie_main(self,metalink,link,rawFile,thumbUrl,title,label,description,contentType,renderingType="",weight="",resourceID="",RESPONSE=None):
+ def changeECHO_movie_main(self,metalink,link,rawFile,lowresFile,thumbUrl,title,label,description,contentType,renderingType="",weight="",resourceID="",RESPONSE=None):
"""Aenderung der Properties"""
- self.resourceID=resourceID
- self.title=title
- self.label=label
- self.description=description
-
- self.contentType=contentType
- self.renderingType=renderingType
- self.weight=weight
-
+ self.resourceID=resourceID
+ self.title=title
+ self.label=label
+ self.description=description
+
+ self.contentType=contentType
+ self.renderingType=renderingType
+ self.weight=weight
+
self.link=link
self.thumbUrl=thumbUrl
self.rawFile=rawFile
+ self.lowresFile=lowresFile
self.metalink=metalink
@@ -419,103 +497,124 @@ class ECHO_movie(Folder,Persistent,ECHO_
def changeECHO_movie_coords(self,RESPONSE=None):
"""Aenderung der Properties - coords"""
- #return self.REQUEST
- for area in self.getMapAreas():
- id = area.getId()
- if self.REQUEST.has_key('del.'+id):
- # delete this area
- self._delObject(id)
- # return to same menu
- if RESPONSE is not None:
- RESPONSE.redirect('ECHO_movie_config_coords')
- return
- # modify this area
- coordstring = self.REQUEST.get('coords.'+id, '')
- coords = string.split(coordstring, ',')
- angle = self.REQUEST.get('angle.'+id, '0')
- type = self.REQUEST.get('type.'+id, 'area')
- if len(coords) == 4:
- area.setCoordString(coordstring)
- area.setAngle(angle)
- area.setType(type)
- # return to main menu
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
+ #return self.REQUEST
+ for area in self.getMapAreas():
+ id = area.getId()
+ if self.REQUEST.has_key('del.'+id):
+ # delete this area
+ self._delObject(id)
+ # return to same menu
+ if RESPONSE is not None:
+ RESPONSE.redirect('ECHO_movie_config_coords')
+ return
+ # modify this area
+ coordstring = self.REQUEST.get('coords.'+id, '')
+ coords = string.split(coordstring, ',')
+ angle = self.REQUEST.get('angle.'+id, '0')
+ type = self.REQUEST.get('type.'+id, 'area')
+ if len(coords) == 4:
+ area.setCoordString(coordstring)
+ area.setAngle(angle)
+ area.setType(type)
+ # return to main menu
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
def changeECHO_movie_credits(self,credits,responsible,copyrightType,RESPONSE=None):
"""Aenderung der Properties"""
- self.credits=credits
- self.responsible=responsible
- self.copyrightType=copyrightType
+ self.credits=credits
+ self.responsible=responsible
+ self.copyrightType=copyrightType
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def changeECHO_resource_metadata_local(self,RESPONSE=None):
- """change metadata"""
- tags=self.findTagsFromMapping(self.contentType)
- for field in tags[1]:
- self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:]
-
-
-
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
+ """change metadata"""
+ tags=self.findTagsFromMapping(self.contentType)
+ for field in tags[1]:
+ self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:]
+
+
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
def changeECHO_resource_metadata(self,RESPONSE=None):
- """change metadata"""
- tags=self.findTagsFromMapping(self.contentType)
- self.OSAS_meta={}
- for field in tags[1]:
- try:
- self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
- self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]
- except:
- """nothing"""
-
- ECHO_helpers.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')).read()
-
-
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
-
-
- def getMDValue(self,fieldName,empty=None):
- if not empty:
- return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
-
- else:
- return self.metaDataHash.get(fieldName,empty)
-
+ """change metadata"""
+ tags=self.findTagsFromMapping(self.contentType)
+ self.OSAS_meta={}
+ for field in tags[1]:
+ try:
+ self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
+ self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]
+ except:
+ """nothing"""
+
+ ECHO_helpers.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')).read()
+
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+ def getMDValue(self,fieldNameTest,empty=None,generic=None):
+ """get md values"""
+ #TODO: cache mappinghash
+
+ fieldName=None
+ if generic:
+ ct=self.contentType.replace(" ","_").lower()
+
+ #caching
+ if not hasattr(self,'_v_mapHash'): #noch keine cachevariable
+ self._v_mapHash={}
+
+ tmp=self._v_mapHash.get(ct,None)
+ if tmp: #teste ob type schon existiert
+ fieldName=tmp.get(fieldNameTest,None)
+ else:
+ self._v_mapHash[ct]={}
+
+ #noch nicht gecached
+ if not fieldName and hasattr(self.getStandardMD(),ct):
+ fieldName=getattr(self.getStandardMD(),ct).generateMappingHash()[fieldNameTest][0]
+ self._v_mapHash[ct][fieldNameTest]=fieldName
+
+ if not empty:
+ return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
+
+ else:
+ return self.metaDataHash.get(fieldName,empty)
+
def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,digiliburlprefix=None):
- """new index.meta"""
- self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
+ """new index.meta"""
+ self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
- if not hasattr(self,'metaDataHash'):
-
- self.copyIndex_meta2echo_resource()
- try:
- return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
- except:
- return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
+ if not hasattr(self,'metaDataHash'):
+
+ self.copyIndex_meta2echo_resource()
+ try:
+ return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
+ except:
+ return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
def showMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
- """schreibe md"""
-
- try:
-
- return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,xmlfrag="yes")
- except:
- return " no metadata stored"
+ """schreibe md"""
+
+ try:
+
+ return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,xmlfrag="yes")
+ except:
+ return " no metadata stored"
def getMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
- """prints out metadata as stored in the echo environment, format is the index.meta format"""
- self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
- return writeMetadata(self.metalink,self.metaDataHash)
+ """prints out metadata as stored in the echo environment, format is the index.meta format"""
+ self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
+ return writeMetadata(self.metalink,self.metaDataHash)
- def changeECHO_movie(self,metalink,link,thumbUrl,rawFile,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
+ def changeECHO_movie(self,metalink,link,thumbUrl,rawFile,lowresFile,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
"""Aenderung der Properties"""
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
@@ -523,6 +622,7 @@ class ECHO_movie(Folder,Persistent,ECHO_
self.metalink=metalink
self.thumbUrl=thumbUrl
self.rawFile=rawFile
+ self.lowresFile=lowresFile
if RESPONSE is not None:
@@ -531,23 +631,23 @@ class ECHO_movie(Folder,Persistent,ECHO_
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'ECHO_movie_config_main'},
- {'label':'Change Metadata','action':'ECHO_movie_config_metadata'},
- {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
+ {'label':'Change Metadata','action':'ECHO_movie_config_metadata'},
+ {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
{'label':'Sync Metadata','action':'ECHO_getResourceMD'},
- {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'},
- {'label':'set/change startpage','action':'setStartPageForm'},
- {'label':'Copy MD for indexing and search','action':'copySearchFields'},
- )
+ {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'},
+ {'label':'set/change startpage','action':'setStartPageForm'},
+ {'label':'Copy MD for indexing and search','action':'copySearchFields'},
+ )
def isDefinedInThisSet(self,fields,field):
- """checks if field is defined in fields"""
- if (fields[0].has_key(field)) and not (fields[0][field]==""):
- return 1
- else:
-
- return 0
-
+ """checks if field is defined in fields"""
+ if (fields[0].has_key(field)) and not (fields[0][field]==""):
+ return 1
+ else:
+
+ return 0
+
def getFieldLabel(self,fields,field):
"""get labels"""
try:
@@ -573,70 +673,56 @@ class ECHO_movie(Folder,Persistent,ECHO_
return field
-
- def getFieldValue(self,field):
- """get value"""
-
- try:
-
- ret=self.metaDataHash[field]
- if ret == "":
- return None
- else:
-
- return ret
- except:
- return None
def getMetaDataHash(self):
- """md hash"""
- return self.metaDataHash
+ """md hash"""
+ return self.metaDataHash
def setFieldValue(self,field,value):
"""get value"""
-
- if not hasattr(self,'metaDataHash'):
- setattr(self,'metaDataHash',{})
- self.metaDataHash[field]=value[0:]
-
+
+ if not hasattr(self,'metaDataHash'):
+ setattr(self,'metaDataHash',{})
+ self.metaDataHash[field]=value[0:]
+
def copySearchFields(self):
- """copys metadatafields to the object"""
- fields=['author','title','year']
- for field in fields:
- setattr(self,'MD_'+field,self.getFieldValue(field))
+ """copys metadatafields to the object"""
+ fields=['author','title','year']
+ for field in fields:
+ setattr(self,'MD_'+field,self.getMDValue(field))
def findLabelsFromMapping(self,referenceType):
"""gib hash mit label -> generic zurueck"""
- #return {},[]
+ #return {},[]
- temp=self.ZopeFind(self.standardMD)
+ temp=self.ZopeFind(self.getStandardMD())
- if referenceType=="":
- referenceType="book"
-
-
+ if referenceType=="":
+ referenceType="book"
+
+
bibdata={}
retdata={}
- fields=[]
- fieldlist=self.standardMD.fieldList
+ fields=[]
+ fieldlist=self.getStandardMD().fieldList
tags=self.findTagsFromMapping(self.contentType)
- self.referencetypes=tags[2]
- for referenceTypeF in self.referencetypes:
+ self.referencetypes=tags[2]
+ for referenceTypeF in self.referencetypes:
- if referenceTypeF[1].title.lower() == referenceType.lower():
+ if referenceTypeF[1].title.lower() == referenceType.lower():
- try:
- bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
- referenceType=referenceTypeF[1].title
- except:
- bibdata[referenceType]=referenceTypeF[1].fields
-
+ try:
+ bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ referenceType=referenceTypeF[1].title
+ except:
+ bibdata[referenceType]=referenceTypeF[1].fields
+
- bibdata['data']=referenceTypeF[1]
- fields=bibdata[referenceType]
+ bibdata['data']=referenceTypeF[1]
+ fields=bibdata[referenceType]
for field in fieldlist:
retdata[field]=referenceTypeF[1].getValue(field)[1]
@@ -644,70 +730,70 @@ class ECHO_movie(Folder,Persistent,ECHO_
def findTagsFromMapping(self,referenceType):
"""gib hash mit label -> generic zurueck"""
-
+
- if referenceType=="":
- referenceType="book"
-
- temp = self.ZopeFind(self.standardMD)[0:]
-
-
- #self.referencetypes=temp[0:]
-
-
-
+ if referenceType=="":
+ referenceType="book"
+
+ temp = self.ZopeFind(self.getStandardMD())[0:]
-
+
+ #self.referencetypes=temp[0:]
+
+
+
+
+
bibdata={}
retdata={}
- fieldlist=self.standardMD.fieldList
+ fieldlist=self.getStandardMD().fieldList
fields=[]
- for referenceTypeF in temp:
- #print referenceType
-
- if referenceTypeF[1].title.lower() == referenceType.lower():
- try:
- bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
- referenceType=referenceTypeF[1].title
- except:
- bibdata[referenceType]=referenceTypeF[1].fields
- bibdata['data']=referenceTypeF[1]
- fields=bibdata[referenceType]
+ for referenceTypeF in temp:
+ #print referenceType
+
+ if referenceTypeF[1].title.lower() == referenceType.lower():
+ try:
+ bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ referenceType=referenceTypeF[1].title
+ except:
+ bibdata[referenceType]=referenceTypeF[1].fields
+ bibdata['data']=referenceTypeF[1]
+ fields=bibdata[referenceType]
for field in fieldlist:
retdata[field]=referenceTypeF[1].getValue(field)[0]
-
+
return retdata,fieldlist,temp,fields
security.declarePublic('copyIndex_meta2echo_resource') # has to be change, presentlyset because of OSAS koordination
def copyIndex_meta2echo_resource(self,RESPONSE=None):
- """copy MD von Index_meta to the echo_resource"""
-
- (metadict, error)=readMetadata(self.metalink)
-
-
-
- self.metaDataHash={}
- if not error=="": #Fehler beim Auslesen des Metafiles
-
- return "ERROR:",error,self.absolute_url()
-
- self.contentType=metadict['bib_type'][0:]
- fields=self.findTagsFromMapping(self.contentType)
-
- #fields=self.findLabelsFromMapping(self.contentType)
- for field in fields[1]:
-
- if self.isDefinedInThisSet(fields,field):
- #print urllib.unquote(metadict.get(self.getFieldTag(fields,field),''))
- self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),''))
-
-
-
- if RESPONSE:
- return RESPONSE.redirect('manage_main')
-
+ """copy MD von Index_meta to the echo_resource"""
+
+ (metadict, error)=readMetadata(self.metalink)
+
+
+
+ self.metaDataHash={}
+ if not error=="": #Fehler beim Auslesen des Metafiles
+
+ return "ERROR:",error,self.absolute_url()
+
+ self.contentType=metadict['bib_type'][0:]
+ fields=self.findTagsFromMapping(self.contentType)
+
+ #fields=self.findLabelsFromMapping(self.contentType)
+ for field in fields[1]:
+
+ if self.isDefinedInThisSet(fields,field):
+ #print urllib.unquote(metadict.get(self.getFieldTag(fields,field),''))
+ self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),''))
+
+
+
+ if RESPONSE:
+ return RESPONSE.redirect('manage_main')
+
def ECHO_getResourceMD(self,template="yes",back=None):
"""Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
(metadict, error)=readMetadata(self.metalink)
@@ -716,28 +802,28 @@ class ECHO_movie(Folder,Persistent,ECHO_
self.REQUEST.SESSION['back']=back
if not error=="": #Fehler beim Auslesen des Metafiles
- return "ERROR:",error
-
+ return "ERROR:",error
+
- if not (metadict['bib_type'].lower()==self.contentType.lower()):
- self.REQUEST.SESSION['contentStorage']=metadict['bib_type']
- self.REQUEST.SESSION['contentZope']=self.contentType
+ if not (metadict['bib_type'].lower()==self.contentType.lower()):
+ self.REQUEST.SESSION['contentStorage']=metadict['bib_type']
+ self.REQUEST.SESSION['contentZope']=self.contentType
- return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')()
+ return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')()
- self.REQUEST.SESSION['metadict']=metadict
+ self.REQUEST.SESSION['metadict']=metadict
-
-
- self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict'])
-
+
+
+ self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict'])
+
-
+
if template=="yes":
- pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt')
- return pt()
+ pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt')
+ return pt()
-
+
@@ -746,25 +832,25 @@ class ECHO_movie(Folder,Persistent,ECHO_
return getattr(self,item)
def checkRDF(self,path):
- """check if pdf in the path"""
- try:
- for fileName in os.listdir(path):
- if os.path.splitext(fileName)[1]==".pdf":
- return os.path.join(path,fileName)
- return None
- except:
- return None
-
-
+ """check if pdf in the path"""
+ try:
+ for fileName in os.listdir(path):
+ if os.path.splitext(fileName)[1]==".pdf":
+ return os.path.join(path,fileName)
+ return None
+ except:
+ return None
+
+
def index_html(self):
"""standard page"""
pdf=self.checkRDF(self.link)
- if pdf:
- fh=file(pdf,'r').read()
- self.REQUEST.RESPONSE.setHeader('Content-Type','application/pdf')
- self.REQUEST.RESPONSE.write(fh)
- self.REQUEST.RESPONSE.close()
- return
+ if pdf:
+ fh=file(pdf,'r').read()
+ self.REQUEST.RESPONSE.setHeader('Content-Type','application/pdf')
+ self.REQUEST.RESPONSE.write(fh)
+ self.REQUEST.RESPONSE.close()
+ return
return self.REQUEST.RESPONSE.redirect(self.link)
@@ -772,24 +858,24 @@ class ECHO_movie(Folder,Persistent,ECHO_
def generate_label(self):
"""Erzeugt_standard_Label aus Template"""
- try:
- pt=getattr(self,"label_template_"+self.contentType.lower())
- self.label=pt()[0:]
- return pt()
- except:
- return self.label
+ try:
+ pt=getattr(self,"label_template_"+self.contentType.lower())
+ self.label=pt()[0:]
+ return pt()
+ except:
+ return self.label
security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination
def generate_title(self,RESPONSE=None):
"""Erzeugt_standard_Label aus Template"""
- try:
- pt=getattr(self,"label_template_"+self.contentType.lower())
- self.title=pt()[0:]
- return pt()
- except:
- return self.label
-
+ try:
+ pt=getattr(self,"label_template_"+self.contentType.lower())
+ self.title=pt()[0:]
+ return pt()
+ except:
+ return self.label
+
Globals.InitializeClass(ECHO_movie)
def manage_addECHO_movieForm(self):
@@ -799,10 +885,10 @@ def manage_addECHO_movieForm(self):
-def manage_addECHO_movie(self,id,title,label,description="",responsible="",link="",thumbUrl="",rawFile="",metalink="",weight="",copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None):
+def manage_addECHO_movie(self,id,title,label,description="",responsible="",link="",thumbUrl="",rawFile="",lowresFile="",metalink="",weight="",copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None):
"""addaresource"""
- newObj=ECHO_movie(id,link,thumbUrl,rawFile,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords)
+ newObj=ECHO_movie(id,link,thumbUrl,rawFile,lowresFile,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords)
self._setObject(id,newObj)