Annotation of ECHO_content/ECHO_movie.py, revision 1.1
1.1 ! dwinter 1: """preliminary object for displaying movies as part of a collection, shall be exchanged by a generalized ressource object"""
! 2:
! 3: import string
! 4: import tempfile
! 5: import re
! 6: import os
! 7: import OFS.Image
! 8: from types import *
! 9: from OFS.Cache import Cacheable
! 10: from OFS.Image import Image
! 11: from Globals import DTMLFile
! 12: from OFS.Folder import Folder
! 13: from OFS.SimpleItem import SimpleItem
! 14: from AccessControl import ClassSecurityInfo
! 15: from AccessControl.User import UserFolder
! 16: from Globals import InitializeClass
! 17: from Globals import DTMLFile
! 18: import Globals
! 19: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
! 20: from Products.PageTemplates.PageTemplate import PageTemplate
! 21: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
! 22: from Globals import Persistent, package_home
! 23: from Acquisition import Implicit
! 24:
! 25: import urllib
! 26: import smtplib
! 27: import time
! 28: from Ft.Xml.Domlette import NonvalidatingReader
! 29: from Ft.Xml.Domlette import PrettyPrint
! 30: from Ft.Xml import EMPTY_NAMESPACE
! 31:
! 32: import Ft.Xml.XPath
! 33: import cStringIO
! 34: import zLOG
! 35:
! 36: try:
! 37: from psycopg import libpq
! 38: except:
! 39: try:
! 40: from pyPgSQL import libpq
! 41: except:
! 42: print "ECHO_collection: Warning - No libpq imported!"
! 43:
! 44: import xml.dom.minidom
! 45:
! 46: import urllib
! 47: import xml.dom.minidom
! 48: import ECHO_helpers
! 49: from ECHO_helpers import *
! 50: from ECHO_language import *
! 51:
! 52:
! 53: class ECHO_movie(Folder,Persistent,ECHO_basis):
! 54: """ECHO Ressource"""
! 55: security=ClassSecurityInfo()
! 56: meta_type='ECHO_movie'
! 57:
! 58: # viewClassificationList=viewClassificationListMaster
! 59:
! 60: getSubCols = ECHO_helpers.getSubCols
! 61:
! 62: security.declareProtected('View','index_html')
! 63:
! 64:
! 65:
! 66: security.declareProtected('View','createPDF')
! 67:
! 68:
! 69: def getRDF(self,urn=None):
! 70: """rdf"""
! 71: ret=getRDFDescription(self,self.link,urn=urn)
! 72: return ret+self.createSubElementRDF(urn=urn)
! 73:
! 74:
! 75: def getAccessRightSelectorHTML(self,outlook="select"):
! 76: """htmlselector"""
! 77: values=['free','mpiwg']
! 78:
! 79: if outlook=="select":
! 80: ret="""<select name="%s">"""%self.getId()
! 81:
! 82: for value in values:
! 83: if value==self.getAccessRightMD():
! 84: ret+="<option selected>%s</option>"%value
! 85: else:
! 86: ret+="<option>%s</option>"%value
! 87: return ret+"</select>"
! 88:
! 89: else:
! 90: ret=""
! 91: for value in values:
! 92:
! 93: if value==self.getAccessRightMD():
! 94: ret+="""<input type="radio" name="%s" value="%s" checked>%s"""%(self.getId(),value,value)
! 95: else:
! 96: ret+="""<input type="radio" name="%s" value="%s">%s"""%(self.getId(),value,value)
! 97: return ret
! 98:
! 99:
! 100:
! 101: def getAccessRightMD(self):
! 102: """set accessright"""
! 103: url=self.metalink
! 104:
! 105: try:
! 106: geturl=""
! 107: for line in ECHO_helpers.urlopen(url).readlines():
! 108: geturl=geturl+line
! 109:
! 110:
! 111: except:
! 112: return (None,"Cannot open: "+url)
! 113:
! 114: try:
! 115: dom=xml.dom.minidom.parseString(geturl)
! 116: root=dom.getElementsByTagName('resource')[0]
! 117: except:
! 118: return (None,"Cannot parse: "+url+"<br>"+geturl)
! 119:
! 120: internal=dom.getElementsByTagName('internal')
! 121: if internal:
! 122: institution=dom.getElementsByTagName('institution')
! 123: return getText(institution[0].childNodes)
! 124:
! 125: free=dom.getElementsByTagName('free')
! 126: if free:
! 127: return "free"
! 128:
! 129: return "free" #default free
! 130:
! 131: def changeAccessRightMD(self,accessright,RESPONSE=None):
! 132: """change the rights"""
! 133:
! 134: params="accessright=%s"%accessright
! 135:
! 136:
! 137: #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
! 138:
! 139:
! 140: 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()
! 141:
! 142:
! 143: if RESPONSE is not None:
! 144: RESPONSE.redirect('manage_main')
! 145:
! 146:
! 147: def setAccessRightXML(self,accessright):
! 148: """set accessright"""
! 149: url=self.metalink
! 150:
! 151: try:
! 152: geturl=""
! 153: for line in ECHO_helpers.urlopen(url).readlines():
! 154: geturl=geturl+line
! 155:
! 156:
! 157: except:
! 158: return (None,"Cannot open: "+url)
! 159:
! 160: try:
! 161: dom=xml.dom.minidom.parseString(geturl)
! 162: root=dom.getElementsByTagName('resource')[0]
! 163: except:
! 164: return (None,"Cannot parse: "+url+"<br>"+geturl)
! 165:
! 166: metanodes=dom.getElementsByTagName('access-conditions')
! 167:
! 168: if not metanodes:
! 169: nodenew=dom.createElement('access-conditions')
! 170: root.appendChild(nodenew)
! 171: metanode=nodenew
! 172: else:
! 173: metanode=metanodes[0]
! 174:
! 175: accesses=metanode.getElementsByTagName('access')
! 176:
! 177: if not accesses:
! 178: nodenew2=dom.createElement('access')
! 179: metanode.appendChild(nodenew2)
! 180: metanode2=nodenew2
! 181: else:
! 182: metanode2=accesses[0]
! 183:
! 184: internal=metanode.getElementsByTagName('internal')
! 185:
! 186: if internal:
! 187: metanode2.removeChild(internal[0]).unlink()
! 188:
! 189: free=metanode.getElementsByTagName('free')
! 190:
! 191: if free:
! 192: metanode2.removeChild(internal[0]).unlink()
! 193:
! 194:
! 195: if accessright=='free':
! 196: nodenew3=dom.createElement('free')
! 197: metanode2.appendChild(nodenew3)
! 198: elif accessright=='mpiwg':
! 199: nodenew3=dom.createElement('internal')
! 200: nodenew4=dom.createElement('institution')
! 201: metanodetext=dom.createTextNode('mpiwg')
! 202: nodenew4.appendChild(metanodetext)
! 203: nodenew3.appendChild(nodenew4)
! 204: metanode2.appendChild(nodenew3)
! 205:
! 206: return dom.toxml().encode('utf-8')
! 207:
! 208:
! 209:
! 210: def copyTitleToInfoXML(self,RESPONSE=None):
! 211: """copy title from the resource"""
! 212: presentationXML=readFieldFromXML(self.metalink,'texttool','presentation')
! 213: resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')
! 214: if (not presentationXML) or (not resourcepath):
! 215: if RESPONSE:
! 216: RESPONSE.write("Error: %s\n"%self.getId())
! 217: else:
! 218: return None,self.absolute_url()
! 219:
! 220: try:
! 221: fh=file(os.path.join(resourcepath,presentationXML),'w')
! 222: fh.write("""<info>
! 223: <author></author>
! 224: <title>%s</title>
! 225: <date></date>
! 226: <display>yes</display>
! 227: </info>"""%self.title)
! 228: fh.close()
! 229: return 1,self.getId()
! 230: except:
! 231: if RESPONSE:
! 232: RESPONSE.write("Error: %s\n"%self.getId())
! 233: else:
! 234: return None,self.absolute_url()
! 235:
! 236:
! 237:
! 238:
! 239: security.declarePublic('content_html')
! 240: def content_html(self):
! 241: """template fuer content"""
! 242: return ECHO_basis.content_html(self,'movie')
! 243:
! 244: # def getViewClassification(self):
! 245: # if hasattr(self,'viewClassification'):
! 246: # return self.viewClassification
! 247: # else:
! 248: # return ""
! 249:
! 250:
! 251: def getCopyrightsHTML(self):
! 252: """gib (link auf copyright link, mediatyp, institution, copyrightType, label von copyrightType) aus"""
! 253:
! 254: if hasattr(self,'copyrightModel'):
! 255: obj=self.copyrightModel
! 256:
! 257: else:
! 258: return "ERROR"
! 259: ret=[]
! 260:
! 261: for copyright in obj.getCopyrights(): #copyright - media / partner / copyrightID
! 262:
! 263:
! 264: try:
! 265: if hasattr(self.copyrightTypes,copyright[2]):
! 266: copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
! 267: link="copyrightTypes/"+copyright[2]+'/copyright.html'
! 268: else:
! 269: copyrightTypeObj=getattr(obj,copyright[2])
! 270: link="copyrightModel/"+copyright[2]+'/copyright.html'
! 271:
! 272: label=copyrightTypeObj.label
! 273: url=getattr(copyrightTypeObj, 'url', '')
! 274:
! 275: if url!='':
! 276: ret.append((url,copyright[0],copyright[1],copyright[2],label))
! 277: else:
! 278: if hasattr(copyrightTypeObj, 'copyright.html'):
! 279: ret.append(("""%s?partner=%s"""%(link,copyright[1]),copyright[0],copyright[1],copyright[2],label))
! 280: else:
! 281: ret.append(('empty',copyright[0],copyright[1],copyright[2],label))
! 282: except:
! 283: """nothing"""
! 284:
! 285: return ret
! 286:
! 287: def getInstitutionsHTML(self):
! 288: """gibt Liste der foerdernden Institutionen aus"""
! 289:
! 290: if hasattr(self,'support'):
! 291: obj=self.support
! 292: ret=obj.getSupporter()
! 293: return ret
! 294: else:
! 295: return ''
! 296:
! 297:
! 298: def getCredits(self):
! 299: """Ausgabe der credits"""
! 300: if self.credits:
! 301: return self.credits
! 302: else:
! 303: return []
! 304:
! 305:
! 306:
! 307: def __init__(self,id,link,thumbUrl,rawFile,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords):
! 308:
! 309: self.id = id
! 310: """Festlegen der ID"""
! 311:
! 312: self.label = label
! 313: self.link= link
! 314: self.metalink=metalink
! 315: self.title=title
! 316: self.weight=weight
! 317: self.credits=toList(credits)
! 318: self.description=description
! 319: self.contentType=contentType
! 320: self.copyrightType=copyrightType
! 321: self.renderingType=renderingType
! 322: self.responsible=responsible
! 323: self.resourceID=resourceID
! 324: self.thumbUrl=thumbUrl
! 325: self.rawFile=rawFile
! 326:
! 327: if coords:
! 328: coordsnew=[ string.split(x,",") for x in coords]
! 329: else:
! 330: coordsnew=[]
! 331:
! 332: self.coords=coordsnew
! 333: # self.viewClassification=""
! 334:
! 335:
! 336:
! 337: def getContentType(self):
! 338: try:
! 339: return self.contentType
! 340: except:
! 341: return ""
! 342:
! 343: def getCopyrightType(self):
! 344: try:
! 345: return self.copyrightType
! 346: except:
! 347: return ""
! 348:
! 349: def getRenderingType(self):
! 350: try:
! 351: return self.renderingType
! 352: except:
! 353: return ""
! 354:
! 355: def ECHO_movie_config(self):
! 356: """Main configuration"""
! 357:
! 358: if not hasattr(self,'weight'):
! 359: self.weight=""
! 360:
! 361: pt=zptFile(self, 'zpt/ChangeECHO_movie.zpt')
! 362: return pt()
! 363:
! 364:
! 365: def ECHO_movie_config_main(self):
! 366: """Main configuration"""
! 367: if not hasattr(self,'weight'):
! 368: self.weight=""
! 369: pt=zptFile(self, 'zpt/ChangeECHO_movie_main.zpt')
! 370: return pt()
! 371:
! 372: def ECHO_movie_config_coords(self):
! 373: """Coords configuration """
! 374: pt=zptFile(self, 'zpt/ChangeECHO_movie_coords.zpt')
! 375: return pt()
! 376:
! 377: def ECHO_movie_config_credits(self):
! 378: """Main configuration"""
! 379: pt=zptFile(self, 'zpt/ChangeECHO_movie_credits.zpt')
! 380: return pt()
! 381:
! 382: def ECHO_resource_config_metadata(self):
! 383: """Main configuration"""
! 384: if (hasattr(self,'metadata')) and not (hasattr(self,'metaDataHash')):
! 385: self.metaDataHash={}
! 386: self.contentType=self.bib_type
! 387: for data in self.metadata:
! 388: data_neu=re.sub('-','_',data)
! 389: self.meta
! 390: DataHash[data_neu]=getattr(self,data)[0:]
! 391:
! 392:
! 393: pt=zptFile(self, 'zpt/ChangeECHO_resource_metadata.zpt')
! 394: return pt()
! 395:
! 396:
! 397:
! 398:
! 399: def changeECHO_movie_main(self,metalink,link,rawFile,thumbUrl,title,label,description,contentType,renderingType,weight,resourceID,RESPONSE=None):
! 400: """Aenderung der Properties"""
! 401: self.resourceID=resourceID
! 402: self.title=title
! 403: self.label=label
! 404: self.description=description
! 405:
! 406: self.contentType=contentType
! 407: self.renderingType=renderingType
! 408: self.weight=weight
! 409:
! 410: self.link=link
! 411: self.thumbUrl=thumbUrl
! 412: self.rawFile=rawFile
! 413:
! 414: self.metalink=metalink
! 415:
! 416: if RESPONSE is not None:
! 417: RESPONSE.redirect('manage_main')
! 418:
! 419:
! 420: def changeECHO_movie_coords(self,RESPONSE=None):
! 421: """Aenderung der Properties - coords"""
! 422: #return self.REQUEST
! 423: for area in self.getMapAreas():
! 424: id = area.getId()
! 425: if self.REQUEST.has_key('del.'+id):
! 426: # delete this area
! 427: self._delObject(id)
! 428: # return to same menu
! 429: if RESPONSE is not None:
! 430: RESPONSE.redirect('ECHO_movie_config_coords')
! 431: return
! 432: # modify this area
! 433: coordstring = self.REQUEST.get('coords.'+id, '')
! 434: coords = string.split(coordstring, ',')
! 435: angle = self.REQUEST.get('angle.'+id, '0')
! 436: type = self.REQUEST.get('type.'+id, 'area')
! 437: if len(coords) == 4:
! 438: area.setCoordString(coordstring)
! 439: area.setAngle(angle)
! 440: area.setType(type)
! 441: # return to main menu
! 442: if RESPONSE is not None:
! 443: RESPONSE.redirect('manage_main')
! 444:
! 445:
! 446: def changeECHO_movie_credits(self,credits,responsible,copyrightType,RESPONSE=None):
! 447: """Aenderung der Properties"""
! 448: self.credits=credits
! 449: self.responsible=responsible
! 450: self.copyrightType=copyrightType
! 451:
! 452: if RESPONSE is not None:
! 453: RESPONSE.redirect('manage_main')
! 454:
! 455:
! 456: def changeECHO_resource_metadata_local(self,RESPONSE=None):
! 457: """change metadata"""
! 458: tags=self.findTagsFromMapping(self.contentType)
! 459: for field in tags[1]:
! 460: self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:]
! 461:
! 462:
! 463:
! 464: if RESPONSE is not None:
! 465: RESPONSE.redirect('manage_main')
! 466:
! 467: def changeECHO_resource_metadata(self,RESPONSE=None):
! 468: """change metadata"""
! 469: tags=self.findTagsFromMapping(self.contentType)
! 470: self.OSAS_meta={}
! 471: for field in tags[1]:
! 472: try:
! 473: self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
! 474: self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]
! 475: except:
! 476: """nothing"""
! 477:
! 478: 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()
! 479:
! 480:
! 481: if RESPONSE is not None:
! 482: RESPONSE.redirect('manage_main')
! 483:
! 484:
! 485: def getMDValue(self,fieldName,empty=None):
! 486: if not empty:
! 487: return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
! 488:
! 489: else:
! 490: return self.metaDataHash.get(fieldName,empty)
! 491:
! 492: def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,digiliburlprefix=None):
! 493: """new index.meta"""
! 494: self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
! 495:
! 496: if not hasattr(self,'metaDataHash'):
! 497:
! 498: self.copyIndex_meta2echo_resource()
! 499: try:
! 500: return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
! 501: except:
! 502: return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
! 503:
! 504: def showMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
! 505: """schreibe md"""
! 506:
! 507: try:
! 508:
! 509: return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,xmlfrag="yes")
! 510: except:
! 511: return "<error> no metadata stored</error>"
! 512:
! 513: def getMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
! 514: """prints out metadata as stored in the echo environment, format is the index.meta format"""
! 515: self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
! 516: return writeMetadata(self.metalink,self.metaDataHash)
! 517:
! 518: def changeECHO_movie(self,metalink,link,thumbUrl,rawFile,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
! 519: """Aenderung der Properties"""
! 520:
! 521: setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
! 522: self.link=link
! 523: self.metalink=metalink
! 524: self.thumbUrl=thumbUrl
! 525: self.rawFile=rawFile
! 526:
! 527:
! 528: if RESPONSE is not None:
! 529: RESPONSE.redirect('manage_main')
! 530:
! 531:
! 532: manage_options = Folder.manage_options+(
! 533: {'label':'Main Config','action':'ECHO_movie_config_main'},
! 534: {'label':'Change Metadata','action':'ECHO_movie_config_metadata'},
! 535: {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
! 536: {'label':'Sync Metadata','action':'ECHO_getResourceMD'},
! 537: {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'},
! 538: {'label':'set/change startpage','action':'setStartPageForm'},
! 539: {'label':'Copy MD for indexing and search','action':'copySearchFields'},
! 540: )
! 541:
! 542:
! 543: def isDefinedInThisSet(self,fields,field):
! 544: """checks if field is defined in fields"""
! 545: if (fields[0].has_key(field)) and not (fields[0][field]==""):
! 546: return 1
! 547: else:
! 548:
! 549: return 0
! 550:
! 551: def getFieldLabel(self,fields,field):
! 552: """get labels"""
! 553: try:
! 554: ret =fields[0][field]
! 555: if ret == "":
! 556: return field
! 557: else:
! 558: return ret
! 559: except:
! 560: return field
! 561:
! 562:
! 563:
! 564: def getFieldTag(self,fields,field):
! 565: """get labels"""
! 566: try:
! 567: ret =fields[0][field]
! 568: if ret == "":
! 569: return field
! 570: else:
! 571: return ret
! 572: except:
! 573: return field
! 574:
! 575:
! 576:
! 577: def getFieldValue(self,field):
! 578: """get value"""
! 579:
! 580: try:
! 581:
! 582: ret=self.metaDataHash[field]
! 583: if ret == "":
! 584: return None
! 585: else:
! 586:
! 587: return ret
! 588: except:
! 589: return None
! 590:
! 591: def getMetaDataHash(self):
! 592: """md hash"""
! 593: return self.metaDataHash
! 594:
! 595: def setFieldValue(self,field,value):
! 596: """get value"""
! 597:
! 598: if not hasattr(self,'metaDataHash'):
! 599: setattr(self,'metaDataHash',{})
! 600: self.metaDataHash[field]=value[0:]
! 601:
! 602:
! 603: def copySearchFields(self):
! 604: """copys metadatafields to the object"""
! 605: fields=['author','title','year']
! 606: for field in fields:
! 607: setattr(self,'MD_'+field,self.getFieldValue(field))
! 608:
! 609:
! 610: def findLabelsFromMapping(self,referenceType):
! 611: """gib hash mit label -> generic zurueck"""
! 612: #return {},[]
! 613:
! 614: temp=self.ZopeFind(self.standardMD)
! 615:
! 616: if referenceType=="":
! 617: referenceType="book"
! 618:
! 619:
! 620: bibdata={}
! 621: retdata={}
! 622: fields=[]
! 623: fieldlist=self.standardMD.fieldList
! 624:
! 625: tags=self.findTagsFromMapping(self.contentType)
! 626: self.referencetypes=tags[2]
! 627: for referenceTypeF in self.referencetypes:
! 628:
! 629: if referenceTypeF[1].title.lower() == referenceType.lower():
! 630:
! 631: try:
! 632: bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
! 633: referenceType=referenceTypeF[1].title
! 634: except:
! 635: bibdata[referenceType]=referenceTypeF[1].fields
! 636:
! 637:
! 638: bibdata['data']=referenceTypeF[1]
! 639: fields=bibdata[referenceType]
! 640: for field in fieldlist:
! 641: retdata[field]=referenceTypeF[1].getValue(field)[1]
! 642:
! 643: return retdata,fieldlist,temp,fields
! 644:
! 645: def findTagsFromMapping(self,referenceType):
! 646: """gib hash mit label -> generic zurueck"""
! 647:
! 648:
! 649: if referenceType=="":
! 650: referenceType="book"
! 651:
! 652: temp = self.ZopeFind(self.standardMD)[0:]
! 653:
! 654:
! 655: #self.referencetypes=temp[0:]
! 656:
! 657:
! 658:
! 659:
! 660:
! 661:
! 662: bibdata={}
! 663: retdata={}
! 664: fieldlist=self.standardMD.fieldList
! 665: fields=[]
! 666: for referenceTypeF in temp:
! 667: #print referenceType
! 668:
! 669: if referenceTypeF[1].title.lower() == referenceType.lower():
! 670: try:
! 671: bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
! 672: referenceType=referenceTypeF[1].title
! 673: except:
! 674: bibdata[referenceType]=referenceTypeF[1].fields
! 675: bibdata['data']=referenceTypeF[1]
! 676: fields=bibdata[referenceType]
! 677: for field in fieldlist:
! 678: retdata[field]=referenceTypeF[1].getValue(field)[0]
! 679:
! 680: return retdata,fieldlist,temp,fields
! 681:
! 682:
! 683: security.declarePublic('copyIndex_meta2echo_resource') # has to be change, presentlyset because of OSAS koordination
! 684: def copyIndex_meta2echo_resource(self,RESPONSE=None):
! 685: """copy MD von Index_meta to the echo_resource"""
! 686:
! 687: (metadict, error)=readMetadata(self.metalink)
! 688:
! 689:
! 690:
! 691: self.metaDataHash={}
! 692: if not error=="": #Fehler beim Auslesen des Metafiles
! 693:
! 694: return "ERROR:",error,self.absolute_url()
! 695:
! 696: self.contentType=metadict['bib_type'][0:]
! 697: fields=self.findTagsFromMapping(self.contentType)
! 698:
! 699: #fields=self.findLabelsFromMapping(self.contentType)
! 700: for field in fields[1]:
! 701:
! 702: if self.isDefinedInThisSet(fields,field):
! 703: #print urllib.unquote(metadict.get(self.getFieldTag(fields,field),''))
! 704: self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),''))
! 705:
! 706:
! 707:
! 708: if RESPONSE:
! 709: return RESPONSE.redirect('manage_main')
! 710:
! 711: def ECHO_getResourceMD(self,template="yes",back=None):
! 712: """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
! 713: (metadict, error)=readMetadata(self.metalink)
! 714:
! 715: if back:
! 716: self.REQUEST.SESSION['back']=back
! 717:
! 718: if not error=="": #Fehler beim Auslesen des Metafiles
! 719: return "ERROR:",error
! 720:
! 721:
! 722: if not (metadict['bib_type'].lower()==self.contentType.lower()):
! 723: self.REQUEST.SESSION['contentStorage']=metadict['bib_type']
! 724: self.REQUEST.SESSION['contentZope']=self.contentType
! 725:
! 726: return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')()
! 727:
! 728: self.REQUEST.SESSION['metadict']=metadict
! 729:
! 730:
! 731:
! 732: self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict'])
! 733:
! 734:
! 735:
! 736: if template=="yes":
! 737: pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt')
! 738: return pt()
! 739:
! 740:
! 741:
! 742:
! 743:
! 744: def ECHO_getMD(self,item):
! 745: """Ausgabe der MD"""
! 746: return getattr(self,item)
! 747:
! 748: def checkRDF(self,path):
! 749: """check if pdf in the path"""
! 750: try:
! 751: for fileName in os.listdir(path):
! 752: if os.path.splitext(fileName)[1]==".pdf":
! 753: return os.path.join(path,fileName)
! 754: return None
! 755: except:
! 756: return None
! 757:
! 758:
! 759: def index_html(self):
! 760: """standard page"""
! 761: pdf=self.checkRDF(self.link)
! 762: if pdf:
! 763: fh=file(pdf,'r').read()
! 764: self.REQUEST.RESPONSE.setHeader('Content-Type','application/pdf')
! 765: self.REQUEST.RESPONSE.write(fh)
! 766: self.REQUEST.RESPONSE.close()
! 767: return
! 768: return self.REQUEST.RESPONSE.redirect(self.link)
! 769:
! 770:
! 771: security.declarePublic('generate_label') # has to be change, presentlyset because of OSAS koordination
! 772:
! 773: def generate_label(self):
! 774: """Erzeugt_standard_Label aus Template"""
! 775: pt=getattr(self,"label_template_"+self.contentType.lower())
! 776:
! 777: self.label=pt()[0:]
! 778: return pt()
! 779:
! 780: security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination
! 781:
! 782: def generate_title(self,RESPONSE=None):
! 783: """Erzeugt_standard_Label aus Template"""
! 784: pt=getattr(self,"label_template_"+self.contentType.lower())
! 785:
! 786: self.title=pt()[0:]
! 787:
! 788: return pt()
! 789:
! 790: Globals.InitializeClass(ECHO_movie)
! 791:
! 792: def manage_addECHO_movieForm(self):
! 793: """Form for adding a ressource"""
! 794: pt=zptFile(self, 'zpt/AddECHO_movieForm.zpt')
! 795: return pt()
! 796:
! 797:
! 798:
! 799: 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):
! 800: """addaresource"""
! 801:
! 802: newObj=ECHO_movie(id,link,thumbUrl,rawFile,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords)
! 803:
! 804: self._setObject(id,newObj)
! 805:
! 806: if RESPONSE is not None:
! 807: RESPONSE.redirect('manage_main')
! 808:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>