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>