File:  [Repository] / OSAS / OSA_system / OSAS_addfiles.py
Revision 1.52: download - view: text, annotated - select for diffs - revision graph
Fri Oct 17 06:26:43 2008 UTC (15 years, 8 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
change procedure to add an object to an collection from urllib to xmlrpc

    1: # Methoden und Classen zum Hinzufuegen von Dokumenten
    2: 
    3: 
    4: from OSAS_helpers import readArchimedesXML, getText
    5: import os
    6: import xml.dom.minidom
    7: import re
    8: import urllib
    9: import OSAS_add
   10: import OSAS_show
   11: import string
   12: from OFS.Folder import Folder
   13: from AccessControl import ClassSecurityInfo
   14: from Globals import InitializeClass
   15: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   16: from Products.PageTemplates.PageTemplate import PageTemplate
   17: import archive # check if this is necessary
   18: from Globals import package_home
   19: 
   20: from xml.sax import make_parser
   21: from xml.sax.handler import ContentHandler
   22: import sys
   23: import logging
   24: import xmlrpclib
   25: #ersetzt logging
   26: def logger(txt,method,txt2):
   27:     """logging"""
   28:     logging.info(txt+ txt2)
   29: 
   30: 
   31: 
   32: def spaces(depth):
   33:     """needed in XMLtoTree"""
   34:     tmp=""
   35:     k=0
   36:     while k<2*depth:
   37:         k+=1
   38:         tmp=tmp+"&nbsp;"+"&nbsp;"
   39:     return tmp
   40: 
   41: 
   42: class OSAS_add_Document(Folder):
   43:     """Hinzufuegen eines Dokumentes zum Storage"""
   44:     security=ClassSecurityInfo()
   45: 
   46:     def __init__(self,id):
   47:         """initialize a new instance"""
   48:         self.id = id
   49:         
   50:         
   51:     meta_type='OSAS_add_Document'    
   52:     manage_options = Folder.manage_options+(
   53:             {'label':'Main Config','action':'add_Document_config'},
   54:             )
   55:         
   56:      
   57:         
   58:     security.declarePublic('add_Document_config')
   59:     def add_Document_config(self):
   60:         """Main configuration"""
   61:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addDocument.zpt')).__of__(self)
   62:         return pt()
   63:     
   64:     security.declarePublic('change_OSAS_add_Document')
   65:     def change_OSAS_add_Document(self,RESPONSE=None):
   66:         """Change"""
   67: #        self.RootFolderName=RootFolderName
   68:         if RESPONSE is not None:
   69:             RESPONSE.redirect('manage_main')
   70: 
   71:     security.declarePublic('index_html')
   72:     def index_html(self):
   73:         """stantard aufruf"""
   74:         return OSAS_add.add(self.standardMD,no_upload=1)
   75: 
   76: 
   77:     security.declarePublic('add2')
   78:     def add2(self):
   79:         """ anlegen naechster schritt"""
   80:         return OSAS_add.add2(self.standardMD)
   81: 
   82:     def add3(self):
   83:         """Foldername"""
   84:         return OSAS_add.add3(self)
   85: 
   86:     def add4(self):
   87:         """Applet"""
   88:         
   89:         return OSAS_add.add4(self)
   90: 
   91:     def add5(self):
   92:         """Foldername"""
   93:         return OSAS_add.add5(self)
   94: 
   95:     def add6(self):
   96:         """write new index.meta file"""
   97:         return OSAS_add.add6(self)
   98: 
   99:     def addText2(self):
  100:         """add only a text"""
  101:         metadata=OSAS_add.parse_query_string(self.REQUEST['QUERY_STRING'])
  102:         metadata['archive-creation-date']=OSAS_add.date(self)
  103:         metadata['creator']=self.REQUEST['creator']
  104:         metadata['description']=self.REQUEST['content_description']
  105:         metadata['archive-path']=os.path.split(self.REQUEST.SESSION['pathnew'])[0]
  106:         #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
  107:         metadata['folder_name']=os.path.split(self.REQUEST.SESSION['pathnew'])[1]
  108:         metadata['content-type']="fulltext document"
  109:         self.reftype=self.REQUEST.SESSION['reftype']
  110:         self.REQUEST.SESSION['add_metadata']=metadata   
  111:         self.add_metadata=metadata
  112:         self.metadata=self.REQUEST.SESSION['metadata']
  113:         self.metadataprint=""
  114:         for tag in self.metadata.keys():
  115:             
  116:             #print str(self.metadata[tag]).decode('utf-8').encode('utf-8')
  117:             self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
  118: 
  119:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self)
  120:         newtemplate.content_type="text/plain"
  121:         renderxml = newtemplate(encoding='utf-8')
  122:         #return renderxml
  123:         metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
  124:         
  125:         f=open(metapath,'w')
  126: 
  127:         f.write(renderxml)
  128:         f.close()
  129:         os.chmod(metapath,0664)
  130:         os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']) 
  131:         
  132:         return OSAS_add.addText2(self)
  133: 
  134:     def addPdf2(self):
  135:         """add only a pdf"""
  136:         metadata=OSAS_add.parse_query_string(self.REQUEST['QUERY_STRING'])
  137:         metadata['archive-creation-date']=OSAS_add.date(self)
  138:         metadata['creator']=self.REQUEST['creator']
  139:         metadata['description']=self.REQUEST['content_description']
  140:         metadata['archive-path']=os.path.split(self.REQUEST.SESSION['pathnew'])[0]
  141:         #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
  142:         metadata['folder_name']=os.path.split(self.REQUEST.SESSION['pathnew'])[1]
  143:         metadata['content-type']="fulltext document"
  144:         self.reftype=self.REQUEST.SESSION['reftype']
  145:         self.REQUEST.SESSION['add_metadata']=metadata   
  146:         self.add_metadata=metadata
  147:         self.metadata=self.REQUEST.SESSION['metadata']
  148:         self.metadataprint=""
  149:         for tag in self.metadata.keys():
  150:                 self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
  151: 
  152:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self)
  153:         newtemplate.content_type="text/plain"
  154:         renderxml = newtemplate(encoding='utf-8')
  155:         metapath=self.REQUEST.SESSION['pathnew']+"/index.meta"
  156:         
  157:         
  158:         f=open(metapath,'w')
  159:         f.write(renderxml)
  160:         f.close()
  161:         os.chmod(metapath,0664)
  162:         os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']) 
  163:         
  164:         return OSAS_add.addPdf2(self)
  165: 
  166:     def addImages(self,path):
  167:         """Hinzufügen eines neuen Imagesfolders"""
  168:         return OSAS_add.addImages(self,path)
  169: 
  170:     def addImages2(self):
  171:         """Upload des neuen Imagefolders"""
  172:         return OSAS_add.addImages2(self)
  173: 
  174:     
  175: def manage_AddOSAS_add_DocumentForm(self):
  176:     """interface for adding the OSAS_add_Metadata"""
  177:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_document.zpt')).__of__(self)
  178:     return pt()
  179: 
  180: def manage_AddOSAS_add_Document(self,id,RESPONSE=None):
  181:     """add the OSAS_root"""
  182:     newObj=OSAS_add_Document(id)
  183:     self.Destination()._setObject(id,newObj)
  184:     if RESPONSE is not None:
  185:         RESPONSE.redirect('manage_main')
  186: 
  187:             
  188: InitializeClass(OSAS_add_Document)
  189: 
  190: 
  191: class OSAS_add_Text(Folder):
  192:     """Hinzufuegen eines Text-Dokumentes zum Storage"""
  193:     security=ClassSecurityInfo()
  194: 
  195:     def __init__(self,id):
  196:         """initialize a new instance"""
  197:         self.id = id
  198:         
  199:         
  200:     meta_type='OSAS_add_Text'    
  201:     manage_options = Folder.manage_options+(
  202:             {'label':'Main Config','action':'add_Text_config'},
  203:             )
  204:         
  205:      
  206:         
  207:     security.declarePublic('add_Text_config')
  208:     def add_Text_config(self):
  209:         """Main configuration"""
  210:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addText.zpt')).__of__(self)
  211:         return pt()
  212:     
  213:     security.declarePublic('change_OSAS_add_Text')
  214:     def change_OSAS_add_Text(self,RESPONSE=None):
  215:         """Change"""
  216: #        self.RootFolderName=RootFolderName
  217:         if RESPONSE is not None:
  218:             RESPONSE.redirect('manage_main')
  219: 
  220:     def addPdf(self,path):
  221:         """Add a pdf"""
  222:         return OSAS_add.addPdf(self,path)
  223: 
  224:     def addPdf2(self):
  225:         """Read the file and store it"""
  226:         return OSAS_add.addPdf2(self)
  227:     
  228:     def addText(self,path):
  229:         """Add a fulltext"""
  230:         return OSAS_add.addText(self,path)
  231: 
  232:     def addText2(self):
  233:         """Read the file and store it"""
  234:         return OSAS_add.addText2(self)
  235:     
  236: def manage_AddOSAS_add_TextForm(self):
  237:     """interface for adding the OSAS_add_Metadata"""
  238:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_text.zpt')).__of__(self)
  239:     return pt()
  240: 
  241: def manage_AddOSAS_add_Text(self,id,RESPONSE=None):
  242:     """add the OSAS_root"""
  243:     newObj=OSAS_add_Text(id)
  244:     self.Destination()._setObject(id,newObj)
  245:     if RESPONSE is not None:
  246:         RESPONSE.redirect('manage_main')
  247: 
  248:             
  249: InitializeClass(OSAS_add_Text)
  250: 
  251: 
  252: class OSAS_add_contextData(Folder):
  253:     """Einfuegen eines Documentes in eine Collection"""
  254:     
  255:     security=ClassSecurityInfo()
  256: 
  257:             
  258:     meta_type='OSAS_add_contextData'    
  259: 
  260:     def XmlToTree(self,URL,pwstr=None):
  261:         """Collection XML to Tree"""
  262:         
  263:         class requestHandler(ContentHandler):
  264:             def __init__(self):
  265:                 self.depth=0
  266:                 self.retStr=""
  267:                 
  268:             def startElement(self,name,attrs):
  269:                 if name=="element":
  270:                     self.depth+=1
  271:                     begin=""
  272:                     end=""
  273:                     if self.depth==1:
  274:                         begin="<b>"
  275:                         end="</b>"
  276:                         
  277:                     self.retStr+=spaces(self.depth)+"<input type='radio' name='collection' value='%s'>%s</input>"%(attrs.get('url'),begin+urllib.unquote(attrs.get('name'))+end)+"<br>\n"
  278: 
  279: 
  280:                     
  281:             def endElement(self,name):
  282:                 if name=="element":
  283:                     self.depth-=1
  284: 
  285:         if pwstr=="":
  286:             pwstr=None
  287:             
  288:         try:
  289:             if pwstr:
  290:                 URL+="/getCollectionTreeXML?pwstr=%s"%pwstr    
  291:             else:
  292:                 URL+="/getCollectionTreeXML"
  293:             parser=make_parser()
  294:             curHandler=requestHandler()
  295:             parser.setContentHandler(curHandler)
  296: 
  297:             parser.parse(urllib.urlopen(URL))
  298:             return curHandler.retStr
  299: 
  300:         except:
  301:             return URL
  302:             return urllib.urlopen(URL).read()
  303:             
  304:       
  305:     def __init__(self,id,collection):
  306:         self.id=id
  307:         self.collection=collection
  308: 
  309:   
  310:    
  311: 
  312:     def getPartners(self,URL):
  313:         """Zeige Partnerliste"""
  314:         class requestHandler(ContentHandler):
  315:             def __init__(self):
  316:                 self.ret=[]
  317:                 
  318:             def startElement(self,name,attrs):
  319:                 if name=="partner":
  320:                     self.ret.append((attrs.get('id'),attrs.get('title').encode('utf-8')))
  321: 
  322: 
  323:         URL+="/getPartnersXML"
  324:         parser=make_parser()    
  325:         curHandler=requestHandler()
  326:         parser.setContentHandler(curHandler)
  327:         parser.parse(urllib.urlopen(URL))               
  328:         try:    
  329:                   
  330:                 return curHandler.ret
  331:         except:
  332:                 return [("",URL)]
  333:             
  334:     
  335:     def addContextData(self,path):
  336:         """Hinzufuegen zu einer Sammlung"""
  337:         
  338:         server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
  339:         if path[0]=="/": #strip leading slash
  340: 		urlpath=path[1:]
  341: 	else:
  342: 		urlpath=path
  343:         try:
  344:             urllib.urlopen(server+"/"+urlpath+"/index.meta")
  345:             
  346:         except:
  347:             logger("OSAS_addfiles (addContextData)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
  348:             return server+"/"+urlpath+"/index.meta file has to exist!"
  349: 
  350:         # old version for foxridge storage viewer
  351:         #links=[(path,'storage server view')]
  352:         # libcoll viewer with imagepath: needs pageimg directory
  353:         links=[('http://libcoll.mpiwg-berlin.mpg.de/libview?mode=imagepath&url=%s/pageimg'%path,'libcoll standard viewer (pageimg)')]
  354:         # libcoll viewer with texttool: needs texttool tag
  355:         links+=[('http://libcoll.mpiwg-berlin.mpg.de/libview?mode=texttool&url=%s/index.meta'%path,'libcoll standard viewer (texttool)')]
  356:                 
  357:         links+=OSAS_show.readContexts(path) # auslesen von contexten fuer den link
  358:         #print "LINK",links
  359:         #return links
  360:         self.REQUEST.SESSION['links']=links
  361:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','contextDataMain.zpt')).__of__(self)
  362:         return pt()
  363:     
  364:    
  365:     def addContextData2(self,path,collection,link,label,description,content_type,responsible,weight,credits=None):
  366:         """Hinzufuegen der Resource"""
  367:         splitted=path.split("/")
  368:         #print "BLU"
  369:         id=splitted[len(splitted)-1]
  370:         title=splitted[len(splitted)-1]
  371:         server=getattr(self,'serverUrl',self.REQUEST['SERVER_URL'])
  372:         if path[0]=="/": #strip leading slash
  373: 		urlpath=path[1:]
  374: 	else:
  375: 		urlpath=path
  376: 
  377: 
  378:         metalink=server+"/"+urlpath+"/index.meta"
  379:         
  380:         #link=TOBEDONE"
  381:         """Hinzufuegen der Ressource"""
  382: 
  383:         params=urllib.urlencode({'id':id,'title':title,'link':link,'label':label,'description':description,'contentType':content_type,'responsible':responsible,'weight':weight,'credits':credits,'metalink':metalink})
  384: 
  385:         server=xmlrpclib.ServerProxy(collection,allow_none=True)   
  386:         try:
  387:             #retStr=urllib.urlopen(collection+"/addResource",params).read()
  388:             
  389:             retStr=server.addResource(id,title,label,description,content_type,responsible,link,metalink,weight,credits)
  390:               
  391:         except:
  392:             return "An Error occured adding the resource A\n", collection,params,str(sys.exc_info()[0]),str(sys.exc_info()[1])
  393:         
  394:         #print "added"
  395:         logging.debug("Add an resource:"+repr(retStr))
  396:         if not retStr:
  397:             return "An Error occured adding the resource B\n", collection,params
  398:         
  399:         #print collection+"/"+id+"/copyIndex_meta2echo_resource"
  400:         #TODO: fehler falls generate label oder title nicht funktioniert abfangen, bei ECHO geht das z.B. manchmal nicht.
  401:         #server=xmlrpclib.ServerProxy(collection+"/"+id,allow_none=True)
  402:         #server2=getattr(server,id)
  403:         #server2.copyIndex_meta2echo_resource()
  404:         #urllib.urlopen(collection+"/"+id+"/copyIndex_meta2echo_resource").read()
  405:         #print "copy2res"
  406: 	#try:
  407:         	#urllib.urlopen(collection+"/"+id+"/generate_label").read()
  408:    #         server2.generate_label()
  409:       #  except:
  410:     #        logger("OSAS_addfiles (addContextData2,label not generated)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
  411: 	#try:
  412:         	#urllib.urlopen(collection+"/"+id+"/generate_title").read()
  413:    #         server2.generate_title()
  414: 	#except:
  415: 	#    logger("OSAS_addfiles (addContextData2,title not generated)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
  416: 	        
  417: 
  418:         return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
  419:         
  420:     manage_options = Folder.manage_options+(
  421:             {'label':'Main Config','action':'add_contextData_config'},
  422:             )
  423:         
  424:      
  425:     def add_contextData_config(self):
  426:         """Main configuration"""
  427:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_add_contextData.zpt')).__of__(self)
  428:         return pt()
  429:     
  430:     
  431:     def change_OSAS_add_contextData(self,collection,serverUrl,pwstr=None,RESPONSE=None):
  432:         """Change"""
  433:         self.pwstr=pwstr
  434:         self.collection=collection
  435:         self.serverUrl=serverUrl
  436:         if RESPONSE is not None:
  437:             RESPONSE.redirect('manage_main')
  438:             
  439: def manage_AddOSAS_add_contextDataForm(self):
  440:     """interface for adding the OSAS_add_Metadata"""
  441:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_contextData.zpt')).__of__(self)
  442:     return pt()
  443: 
  444: def manage_AddOSAS_add_contextData(self,id,collection,RESPONSE=None):
  445:     """add the OSAS_root"""
  446:     newObj=OSAS_add_contextData(id,collection)
  447:     self.Destination()._setObject(id,newObj)
  448:     if RESPONSE is not None:
  449:         RESPONSE.redirect('manage_main')
  450: 
  451:             
  452: InitializeClass(OSAS_add_contextData)
  453: 
  454: class OSAS_add_Presentation(Folder):
  455:     """Hinzufügen der Presentationsinformationen"""
  456:     security=ClassSecurityInfo()
  457: 
  458:     def __init__(self,id):
  459:         """initialize a new instance"""
  460:         self.id = id
  461:         
  462:         
  463:     meta_type='OSAS_add_Presentation'    
  464:     manage_options = Folder.manage_options+(
  465:             {'label':'Main Config','action':'add_Presentation_config'},
  466:             )
  467:         
  468:      
  469:         
  470:     security.declarePublic('add_Presentation_config')
  471:     def add_Presentation_config(self):
  472:         """Main configuration"""
  473:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addPresentation.zpt')).__of__(self)
  474:         return pt()
  475:     
  476:     security.declarePublic('change_OSAS_add_Presentation')
  477:     def change_OSAS_add_Presentation(self,RESPONSE=None):
  478:         """Change"""
  479: #        self.RootFolderName=RootFolderName
  480:         if RESPONSE is not None:
  481:             RESPONSE.redirect('manage_main')
  482: 
  483:     def addPresentation(self,path):
  484:         """Hinzufügen der Presenationsinformation"""
  485:         return OSAS_add.addPresentation(self,path)
  486: 
  487:     def addPresentation2(self):
  488:         """Eingabe von Metadateninformationen"""
  489:         return OSAS_add.addPresentation2(self)
  490:     
  491: def manage_AddOSAS_add_PresentationForm(self):
  492:     """interface for adding the OSAS_add_Metadata"""
  493:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_presentation.zpt')).__of__(self)
  494:     return pt()
  495: 
  496: def manage_AddOSAS_add_Presentation(self,id,RESPONSE=None):
  497:     """add the OSAS_root"""
  498:     newObj=OSAS_add_Presentation(id)
  499:     self.Destination()._setObject(id,newObj)
  500:     if RESPONSE is not None:
  501:         RESPONSE.redirect('manage_main')
  502: 
  503:             
  504: InitializeClass(OSAS_add_Presentation)
  505: 
  506: class OSAS_combineTextImage(Folder):
  507:     """Hinzufüge der Combine Text und Image"""
  508:     security=ClassSecurityInfo()
  509: 
  510:     def __init__(self,id):
  511:         """initialize a new instance"""
  512:         self.id = id
  513:         
  514:         
  515:     meta_type='OSAS_combineTextImage'    
  516:     manage_options = Folder.manage_options+(
  517:             {'label':'Main Config','action':'combineTextImage_config'},
  518:             )
  519:         
  520: 
  521:         
  522:     security.declarePublic('combineTextImage_config')
  523:     def combineTextImage_config(self):
  524:         """Main configuration"""
  525:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_combineTextImage.zpt')).__of__(self)
  526:         return pt()
  527:     
  528:     security.declarePublic('change_OSAS_combineTextImage')
  529:     def change_OSAS_combineTextImage(self,RESPONSE=None):
  530:         """Change"""
  531: #        self.RootFolderName=RootFolderName
  532:         if RESPONSE is not None:
  533:             RESPONSE.redirect('manage_main')
  534:             
  535:     security.declarePublic('combineTextImage')
  536:     def combineTextImage(self,path):
  537:         """Hinzufügen der Presenationsinformation"""
  538:         """gibt input formular zur erstellung des texttools meta tag aus"""
  539:         files = os.listdir(path)
  540:         
  541:         texts=[]
  542:         imagefolders=[]
  543:         presentationfolders=[]
  544: 
  545:         splitted=path.split("/")
  546:         externxml=readArchimedesXML(splitted[len(splitted)-1])
  547:         
  548:         for filename in files:
  549:                 #print "FN",filename
  550:                 if archive.isdigilib2(path+"/"+filename):
  551:                         imagefolders.append(filename)
  552:                         
  553:                 if archive.isFullText(path,filename):
  554:                         #print "HI"
  555:                         texts.append(filename)
  556:                 if archive.isPresentation(path,filename):
  557:                         presentationfolders.append(filename)
  558:         
  559:         dom=xml.dom.minidom.parse(path+"/index.meta")
  560:         try:
  561:                 filelanguage=archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
  562:         except:
  563:                 filelanguage=""
  564:                 
  565:         self.REQUEST.SESSION['isolist']=OSAS_add.getISO()
  566:         
  567:         tmp=self.REQUEST.SESSION['isolist'].keys()
  568:         tmp.sort()
  569:         self.REQUEST.SESSION['isolistsort']=tmp
  570:         self.REQUEST.SESSION['path']=path
  571:         self.REQUEST.SESSION['texts']=texts
  572:         self.REQUEST.SESSION['imagefolders']=imagefolders
  573:         self.REQUEST.SESSION['presentationfolders']=presentationfolders
  574:         self.REQUEST.SESSION['filelanguage']=filelanguage
  575:         self.REQUEST.SESSION['externxml']=externxml
  576: 
  577:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ImageandText')).__of__(self)
  578:         return newtemplate()
  579:         
  580:     def getViewerTemplateSets(self,obj_ids=None):
  581:         """Get the ViewerTemplateSet title for configuration"""
  582:         ret=[]
  583:         viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
  584: 
  585:         try:
  586:             viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
  587:             
  588:             for viewerTemplateSet in viewerTemplateSets:
  589:                 ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1]))
  590:             
  591:             return ret
  592:         
  593:         except:
  594:             return [('no ViewerTemplateSetfolders','')]
  595: 
  596:     def getTextToolsField(self,path,name,default=''):
  597:         """Lese Textoolsfelder aus index.meta im path aus"""
  598:         
  599:         try:
  600:             dom=xml.dom.minidom.parse(path+"/index.meta")
  601:             node=dom.getElementsByTagName('texttool')[0] #getNode
  602:             subnode=node.getElementsByTagName(name)[0]
  603: 
  604:             # bei text wird nur der Folder gebraucht
  605:             if name=="text":
  606:                 splitted=getText(subnode.childNodes).split("/")
  607:                 return splitted[len(splitted)-2]
  608:             else:
  609:                 return getText(subnode.childNodes)
  610:         except:
  611:             return default
  612:    
  613: 
  614:     def combineTextImage2(self,path):
  615:         """Eingabe von Metadateninformationen"""
  616:         
  617:         # correct path
  618:         path=re.sub("//","/",path)
  619:         OSAS_add.combineTextImage2(self,path) # Add images
  620:         splitted=path.split("/")
  621:         linkPath=splitted[len(splitted)-1]
  622:         linkViewerEnvironmentImages="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir=%s&step=thumb" % linkPath
  623:         linkViewerEnvironmentOnlyText="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir=%s&step=textonly" % linkPath
  624: 
  625:         if self.REQUEST.has_key('image'): # bilder vorhanden
  626:             linkViewerEnvironment=linkViewerEnvironmentImages
  627:         else:
  628:             linkViewerEnvironment=linkViewerEnvironmentOnlyText
  629:             
  630:         self.REQUEST.SESSION['linkViewerEnvironment']=linkViewerEnvironment
  631:         
  632:         writeToContext(path,linkViewerEnvironment,"ECHO standard environment",unique="yes")
  633:         
  634:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImageFinal.zpt')).__of__(self)
  635: 
  636:         return pt()
  637: 
  638:     def isSelectedViewerTemplateSet(self,obj,id):
  639:         """is ausgewählt"""
  640:         
  641:         if self.REQUEST['viewerTemplateSet']==id:
  642:             return 1
  643:         else:
  644:             return None
  645: 
  646: def writeToContext(path,link,description,unique="no"):
  647:     """Created an additional entry to the index.meta file of path"""
  648:     dom=xml.dom.minidom.parse(path+"/index.meta")
  649:     node=dom.getElementsByTagName('resource')[0]
  650: 
  651:     if unique=="yes":
  652:         
  653:         contexts=node.getElementsByTagName('context')
  654:         for context in contexts:
  655:             nameTag=getText(context.getElementsByTagName('name')[0].childNodes)
  656:             linkTag=getText(context.getElementsByTagName('link')[0].childNodes)
  657:             
  658:             
  659:             linkTag=re.sub("\:86","",linkTag) # alter port 86 gleich ohne port nummer (hack)
  660:             if (nameTag==description) and (linkTag==link):
  661:                 node.removeChild(context).unlink()
  662:                     
  663:     subnode=dom.createElement('context')
  664: 
  665:     linknode=dom.createElement('link')
  666:     namelinknode=dom.createTextNode(link)
  667:     linknode.appendChild(namelinknode)
  668:     subnode.appendChild(linknode)
  669: 
  670:     linknode=dom.createElement('name')
  671:     namelinknode=dom.createTextNode(description)
  672:     linknode.appendChild(namelinknode)
  673:     subnode.appendChild(linknode)
  674: 
  675:     node.appendChild(subnode)
  676:     
  677:     writefile=file(path+"/index.meta","w")
  678:     #print path+"/index.meta"
  679:     writefile.write(dom.toxml(encoding="UTF-8"))
  680:     writefile.close()
  681: 
  682: def manage_AddOSAS_combineTextImageForm(self):
  683:     """interface for adding the OSAS_add_Metadata"""
  684:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_combineTextImage.zpt')).__of__(self)
  685:     return pt()
  686: 
  687: def manage_AddOSAS_combineTextImage(self,id,RESPONSE=None):
  688:     """add the OSAS_root"""
  689:     newObj=OSAS_combineTextImage(id)
  690:     self.Destination()._setObject(id,newObj)
  691:     if RESPONSE is not None:
  692:         RESPONSE.redirect('manage_main')
  693: 
  694:             
  695: InitializeClass(OSAS_combineTextImage)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>