File:  [Repository] / OSAS / OSA_system / OSAS_add.py
Revision 1.51: download - view: text, annotated - select for diffs - revision graph
Tue Apr 15 14:25:32 2008 UTC (16 years, 2 months ago) by casties
Branches: MAIN
CVS tags: HEAD
taken out BVEs reg.cgi and scaleomat calls

    1: #Neue Version Begin 5.4.2004
    2: 
    3: 
    4: """Methoden zum hinzufügen von Dokumenten ins Archiv"""
    5: from OSAS_helpers import readArchimedesXML 
    6: try:
    7:         import archive
    8: except:
    9:         print "archive not imported"
   10:         
   11: import os
   12: import os.path
   13: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   14: from Products.PageTemplates.PageTemplate import PageTemplate
   15: import string
   16: import urllib
   17: import logging
   18: 
   19: #ersetzt logging
   20: def logger(txt,method,txt2):
   21:     """logging"""
   22:     logging.info(txt+ txt2)
   23: 
   24: 
   25: import xml.dom.minidom
   26: from time import localtime,strftime
   27: from Globals import package_home
   28: from types import *
   29: 
   30: import re
   31: def showHelp(helptext):
   32:         """show helptext"""
   33:         return """<html>
   34:         <body>
   35:         %
   36:         </body>
   37:         </html>"""%helptext
   38: def add(self, no_upload=0):
   39:         """ Add metadata or metadata and documents to the repository
   40:         no_upload=0 kein upload sonst upload von documententen"""
   41: 
   42:         #self.referencetypes=self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping'])
   43:         self.referencetypes=self.ZopeFind(self)
   44:         
   45:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_new')).__of__(self)
   46:         self.REQUEST.SESSION['path']=self.REQUEST['path']
   47:         if no_upload==0:
   48:                 self.REQUEST.SESSION['no_upload']='yes'
   49:         else:
   50:                 if self.REQUEST.SESSION.has_key('no_upload'):
   51:                         del self.REQUEST.SESSION['no_upload']
   52:                         
   53:         return newtemplate()
   54: 
   55: 
   56: 
   57: def getISO():
   58:         """ISO"""
   59:         try:
   60:                 f=file(os.path.join(package_home(globals()),'iso639-1.inc'),'r').readlines()
   61: 
   62:                 ret={}
   63:                 for lineraw in f:
   64:                         line=lineraw.encode('ascii','replace').strip()
   65:                         value=string.split(line,'\t')[0].encode('ascii','replace')
   66:                         key=string.split(line,'\t')[1].encode('ascii','replace')
   67:                         ret[key]=value
   68:         except:
   69:                 ret={}
   70:         return ret
   71: 
   72: 
   73: def add2(self):
   74:         self.reftype=self.REQUEST['Reference Type']
   75:         self.REQUEST.SESSION['reftype']=self.reftype
   76:         self.bibdata={}
   77:         for referenceType in self.referencetypes:
   78:                 #print referenceType
   79:                 if referenceType[1].title == self.reftype: 
   80:                         self.bibdata[referenceType[1].title]=referenceType[1].fields
   81:                         self.bibdata['data']=referenceType[1]
   82:                         self.fields=self.bibdata[self.reftype]
   83:         
   84:         self.isolist=getISO()
   85:         tmp=getISO().keys()
   86:         tmp.sort()
   87:         self.isokeys=tmp
   88:         #listed=[ x for x in self.isolist.keys()]
   89:         #print listed
   90:         #sorted=listed.sort()
   91:         #print sorted
   92:         
   93:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_bibdata')).__of__(self)
   94:         return newtemplate()
   95:         #return self.fields
   96: 
   97: 
   98: def parse_query_string(str):
   99:         queries={}
  100:         key=""
  101:         value=""
  102:         tmp=""
  103:         toggle="key"
  104:         str=urllib.unquote(str)
  105:         for i in str:
  106:                 if i=="=":
  107:                         key=tmp
  108:                         toggle="value"                          
  109:                         tmp=""
  110:                 elif i=="&":
  111:                         queries[key]=tmp
  112:                         tmp=""
  113:                         toggle="key"
  114:                 else:
  115:                         if toggle=="key":
  116:                                 if i=="+" : i="-"
  117:                         else:
  118:                                 if i=="+" : i=" "
  119:                         tmp=tmp+i
  120:         queries[key]=tmp
  121:         return queries
  122:         
  123: def add3(self):
  124:         """Foldername"""
  125:         metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
  126:         self.REQUEST.SESSION['metadata']=metadata
  127:         vorschlag=[]
  128: 
  129:         if metadata.has_key('author'):
  130:                 vorschlag.append(metadata['author'][:5])
  131:         if metadata.has_key('title'):
  132:                 vorschlag.append(metadata['title'][:5])
  133:         if metadata.has_key('year'):
  134:                 vorschlag.append(metadata['year'])
  135:         
  136:                 
  137:         vorschlag_naming=string.join(vorschlag,"_")
  138:         
  139:                 
  140:         self.vorschlag_naming=unicode(vorschlag_naming,'ascii','ignore')
  141:         if self.REQUEST.SESSION.has_key('no_upload'):
  142:                 self.REQUEST.SESSION['folder_name']=self.REQUEST.SESSION['path']
  143:                 return add5(self)
  144:         else:
  145:                 newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_naming')).__of__(self)
  146:                 return newtemplate()
  147:         
  148: 
  149: def add4(self):
  150: 
  151:         self.path=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
  152:         
  153:         self.folder_name=self.REQUEST['folder_name']
  154:         # next has to be changed -> error if back button is used!!
  155:         self.REQUEST.SESSION['folder_name']=self.folder_name
  156:         #return self.REQUEST['submit']
  157: 
  158:         try:    
  159:                 #os.popen('mkdir '+self.REQUEST.SESSION['path'])
  160:                 os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
  161:                 os.chmod(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']),0775)
  162: 
  163:         except:
  164: 
  165:                 """nothing"""
  166: 
  167:         if self.REQUEST['submit']=="upload images":
  168:                 self.REQUEST.SESSION['path']=os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name'])
  169:                 
  170: 
  171:                 self.image_folder_name="pageimg"
  172:                 newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_upload')).__of__(self)
  173:                 
  174:                 return newtemplate()
  175:         
  176:         elif self.REQUEST['submit']=="upload pdf":
  177:                 os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
  178:                 return addPdf(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
  179:         else:
  180:                 os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
  181:                 return addText(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
  182:         
  183:         
  184: def add5(self):
  185:         """ADD INDEX.META"""
  186:         try:
  187:                 os.chmod(self.REQUEST.SESSION['path'],0775)
  188:         except:
  189:                 pass
  190: 
  191:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_metadata')).__of__(self)
  192:         return newtemplate()
  193: 
  194: def add6(self):
  195:         metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
  196:         metadata['archive-path']=os.path.split(self.REQUEST.SESSION['path'])[0]
  197:         #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
  198:         metadata['folder_name']=os.path.split(self.REQUEST.SESSION['path'])[1]
  199:         metadata['content-type']="scanned document"
  200:         self.reftype=self.REQUEST.SESSION['reftype']
  201:         self.REQUEST.SESSION['add_metadata']=metadata   
  202:         self.add_metadata=metadata
  203:         self.metadata=self.REQUEST.SESSION['metadata']
  204:         self.metadataprint=""
  205:         for tag in self.metadata.keys():
  206:                 if tag!="":
  207:                         self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
  208: 
  209:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self)
  210:         newtemplate.content_type="text/plain"
  211:         renderxml = newtemplate(encode='utf-8')
  212:         
  213:                 
  214:         if self.REQUEST.SESSION.has_key('no_upload'):
  215:                 metapath=self.REQUEST.SESSION['path']+"/index.meta"
  216:         else:
  217:                 metapath=self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']+"/index.meta"
  218:         
  219:         f=open(metapath,'w')
  220:         try:
  221:                 f.write(renderxml.encode('utf-8'))
  222:         except:
  223:                 f.write(unicode(renderxml,'latin-1').encode('utf-8'))
  224:                 #f.write(renderxml)
  225: 
  226:         f.close()
  227:         os.chmod(metapath,0664)
  228:         os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']) 
  229:         if self.REQUEST.SESSION.has_key('no_upload'):
  230:                 
  231:                 #newtemplate2=PageTemplateFile('/usr/local/mpiwg/Zope/Extensions/done',"text/html").__of__(self)
  232:                 return self.REQUEST.response.redirect(self.REQUEST['URL2']+"?path="+self.REQUEST.SESSION['path'])
  233:         else:
  234:                 #print self.add_metadata['archive-path']
  235:                 self.viewpath=re.search(r"/mpiwg/online/(.*)",self.add_metadata['archive-path']).group(1)
  236:         
  237:         if (self.REQUEST.SESSION.has_key('no_upload')) and (self.REQUEST.SESSION['no_upload']=="text"):
  238:                         """text upload"""
  239:                         return 1
  240:         else:   
  241:                         newtemplate2=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_saved')).__of__(self)
  242:                         newtemplate2.content_type="text/html"
  243:                         self.REQUEST.response.setHeader('Content-Type','text/html')
  244:                         return newtemplate2()
  245:                 
  246: 
  247: 
  248: def date(self):
  249:         return strftime("%d.%m.%Y",localtime()) 
  250: 
  251: 
  252: def addPresentation(self,path):
  253:         """add presentation to the path"""
  254:         
  255:         dom=xml.dom.minidom.parse(path+"/index.meta")
  256:         
  257:         
  258:         try:
  259:                 author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)
  260:         except:
  261:                 try:
  262:                         author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes)
  263:                 except:
  264:                         try:
  265:                                 author=archive.getText(dom.getElementsByTagName('Editor')[0].childNodes)
  266:                         except:
  267:                                 author=""
  268:         try:
  269:                 title=archive.getText(dom.getElementsByTagName('title')[0].childNodes)
  270:         except:
  271:                 title=""
  272:                 
  273:         try:
  274:                 date=archive.getText(dom.getElementsByTagName('year')[0].childNodes)
  275:         except:
  276:                 try:
  277:                         date=archive.getText(dom.getElementsByTagName('Year')[0].childNodes)
  278:                 except:
  279:                         try:
  280:                                 date=archive.getText(dom.getElementsByTagName('date')[0].childNodes)
  281:                         except:
  282:                                 date=""
  283:         i=1
  284:         while os.path.exists(path+"/%02d-presentation"%i):
  285:                 i+=1
  286:         self.REQUEST.SESSION['presentationname']="%02d-presentation"%i
  287:         self.REQUEST.SESSION['path']=path
  288: 
  289:         tmpTxt="""<?xml version="1.0" encoding="UTF-8"?>
  290:         <info>
  291:         <author>%s</author>
  292:         <title>%s</title>
  293:         <date>%s</date>
  294:         <display>yes</display>
  295: </info>"""%(author,title,date)
  296:         
  297:         self.REQUEST.SESSION['xmlvorschlag']=tmpTxt.encode('utf-8')
  298:         
  299:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPresentation')).__of__(self)
  300:         return newtemplate()
  301: 
  302: def addPresentation2(self):
  303:         """add presentation """
  304:         folder_name=self.REQUEST['folder_name']
  305:         #print self.REQUEST['folder_name']
  306:         content_description=self.REQUEST['content_description']
  307: 
  308:         path=self.REQUEST.SESSION['path']
  309: 
  310:         if not self.REQUEST.has_key('fileupload'):
  311:                 xmlinfo=self.REQUEST['xmltext']
  312:                 file_name="info.xml"
  313: 
  314:         else:
  315:                 file_name=self.REQUEST['fileupload'].filename
  316:                 xmlinfo=self.REQUEST.form['fileupload'].read()
  317:                 # hack Multipart auswertung funktioniert nicht ausser bei mozilla
  318:                 file_name="info.xml"
  319:                 xmlinfo=self.REQUEST['xmltext']
  320:         try:
  321:                 os.mkdir(path+"/"+folder_name)
  322:         except:
  323:                 """nothing"""
  324:         #print "NAME:",file_name
  325:         f=open(path+"/"+folder_name+"/"+file_name,"w")
  326:         f.write(xmlinfo)
  327:         f.close()
  328:         try:
  329:                 os.chmod(path+"/"+folder_name,0775)
  330:         except:
  331:                 """NO"""
  332: 
  333:         os.chmod(path+"/"+folder_name+"/"+file_name,0664)
  334:         addDirsToIndexMeta(path,folder_name,content_description,'presentation')
  335:         
  336:         return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
  337: 
  338: 
  339: def addPdf(self,path,folder=None):
  340:         """add fulltext to the path"""
  341:         self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
  342:         self.REQUEST.SESSION['pathnew']=path
  343:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPdf')).__of__(self)
  344:         return newtemplate()
  345: 
  346: def addPdf2(self):
  347:         """addtext"""
  348:         folder_name="pdf" # foldername fixed
  349:         
  350:         if self.REQUEST['file_name']=="":
  351:                 file_name=self.REQUEST['fileupload'].filename
  352:         else:
  353:                 file_name=self.REQUEST['file_name']
  354:                 
  355:         #print self.REQUEST['folder_name']
  356:         content_description=self.REQUEST['content_description']
  357:         path=self.REQUEST.SESSION['pathnew']
  358: 
  359:         filedata=self.REQUEST.form['fileupload'].read()
  360:         try:
  361:                 os.mkdir(path+"/"+folder_name)
  362:         except:
  363:                 """nothing"""
  364:         f=open(path+"/"+folder_name+"/"+file_name,"w")
  365:         f.write(filedata)
  366:         f.close()
  367:         os.chmod(path+"/"+folder_name,0755)
  368:         os.chmod(path+"/"+folder_name+"/"+file_name,0644)
  369:         addDirsToIndexMeta(path,folder_name,content_description,'pdf')
  370: 
  371:         return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
  372: 
  373: def addText(self,path,folder=None):
  374:         """add fulltext to the path"""
  375:         self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
  376:         self.REQUEST.SESSION['pathnew']=path
  377:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addText')).__of__(self)
  378:         return newtemplate()
  379: 
  380: def addText2(self):
  381:         """addtext"""
  382:         folder_name=self.REQUEST['folder_name']
  383:         #print self.REQUEST['folder_name']
  384:         content_description=self.REQUEST['content_description']
  385:         path=self.REQUEST.SESSION['pathnew']
  386:         file_name=self.REQUEST['fileupload'].filename
  387:         filedata=self.REQUEST.form['fileupload'].read()
  388:         os.mkdir(path+"/"+folder_name)
  389:         f=open(path+"/"+folder_name+"/"+file_name,"w")
  390:         f.write(filedata)
  391:         f.close()
  392:         os.chmod(path+"/"+folder_name,0755)
  393:         os.chmod(path+"/"+folder_name+"/"+file_name,0644)
  394:         addDirsToIndexMeta(path,folder_name,content_description,'fulltext')
  395: 
  396:         return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
  397: 
  398: def addTextExternal(self,path,texturl,version):
  399:         """hinzufügen eines externen textes"""
  400:         try: #neue text version einlesen
  401:                 texttemp=urllib.urlopen(texturl).readlines()
  402:                 text=""
  403:                 for line in texttemp:
  404:                         text=text+line
  405:         except: #fehler beim lesen des textes
  406:                 return "ERROR: cannot read: %s"%texturl
  407:         if TextExternalError(text): #kein xml header
  408:                 return "ERROR: cannot read: %s"%texturl, "received:",text 
  409:         textpath=getNewTextPath(path) #erzeuge neuen Ornder für den Text
  410:         splitted=string.split(texturl,"/")
  411:         name=splitted[len(splitted)-1] #Name des XML-files
  412:         try:
  413:                 writefile=file(path+"/"+textpath+"/"+name,"w")
  414:         except:
  415:                 return"ERROR: cannot write: %s"%path+"/"+textpath+"/"+name
  416:         writefile.write(text)
  417:         writefile.close()
  418:         os.chmod(path+"/"+textpath+"/"+name,0644)
  419: 
  420:         #add new file to XML
  421:         dom=xml.dom.minidom.parse(path+"/index.meta")
  422:         node=dom.getElementsByTagName('resource')[0] #getNode
  423: 
  424:         subnode=dom.createElement('dir')
  425:         
  426:         namenode=dom.createElement('name')
  427:         namenodetext=dom.createTextNode(textpath)
  428:         namenode.appendChild(namenodetext)
  429:         subnode.appendChild(namenode)
  430:             
  431:         descriptionnode=dom.createElement('description')
  432:         descriptionnodetext=dom.createTextNode('archimedes text:'+version)
  433:         descriptionnode.appendChild(descriptionnodetext)
  434:         subnode.appendChild(descriptionnode)
  435: 
  436:         contentnode=dom.createElement('content-type')
  437:         contentnodetext=dom.createTextNode('fulltext')
  438:         contentnode.appendChild(contentnodetext)
  439:         subnode.appendChild(contentnode)
  440:         
  441:         node.appendChild(subnode)
  442: 
  443:         writefile=file(path+"/index.meta","w")
  444:         writefile.write(dom.toxml(encoding="UTF-8"))
  445:         writefile.close()
  446: 
  447:         #change texttool tag
  448:         dom=xml.dom.minidom.parse(path+"/index.meta")
  449:         node=dom.getElementsByTagName('meta')[0] #getNode
  450: 
  451:         try: #texttool existiert schon
  452:                 subnode=node.getElementsByTagName('texttool')[0]
  453:         except: #wenn nicht Fehler ausgeben
  454:                 return "ERROR:no presentation configured yet, user Web Front End to do so!"
  455:         
  456: 
  457:         try:
  458:                 texttoolnodelist=subnode.getElementsByTagName('text')
  459:         
  460:                 if not len(texttoolnodelist)==0: #texttool tag existiert schon, dann löschen
  461:                         subsubnode=subnode.removeChild(texttoolnodelist[0])
  462:                         subsubnode.unlink()
  463:         except:
  464:                 """nothing"""
  465:         # text neu anlegen
  466:         textfoldernode=dom.createElement('text')
  467:         textfoldernodetext=dom.createTextNode(textpath+"/"+name)
  468:         textfoldernode.appendChild(textfoldernodetext)
  469:         subnode.appendChild(textfoldernode)
  470: 
  471:         #index.meta ausgeben
  472:         writefile=file(path+"/index.meta","w")
  473:         writefile.write(dom.toxml(encoding="UTF-8"))
  474:         writefile.close()
  475:         
  476:         #registrieren
  477:         return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
  478:         
  479:         
  480: 
  481: def TextExternalError(text):
  482:         firsts=text[0:10]
  483:         #print firsts
  484:         try:
  485:                 match=re.search(r".*<?xml.*",firsts)
  486:         except:
  487:                 return 1
  488:         return 0
  489: 
  490: def getNewTextPath(path):
  491:         i=1
  492:         while os.path.exists(path+"/fulltext%i"%i):
  493:                 i+=1
  494:         os.mkdir(path+"/fulltext%i"%i)
  495:         os.chmod(path+"/fulltext%i"%i,0755)
  496:         return "fulltext%i"%i
  497: 
  498: def addImages(self,path):
  499:         """Imagesfolder to the path"""
  500:         self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing pageimages files
  501:         self.REQUEST.SESSION['path']=path
  502:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_addImages')).__of__(self)
  503:         return newtemplate()
  504: 
  505: def addImages2(self):
  506:         
  507:         self.image_folder_name=self.REQUEST['folder_name']
  508:         #print self.REQUEST['folder_name']
  509:         self.content_description=self.REQUEST['content_description']
  510:         #self.path=self.REQUEST.SESSION['path']
  511:         
  512:         
  513:         self.content_type='images'
  514:         addDirsToIndexMeta(self.REQUEST.SESSION['path'],self.image_folder_name,self.content_description,self.content_type)
  515:         self.REQUEST.SESSION['path']=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
  516:         newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_upload2')).__of__(self)
  517:         return newtemplate()
  518:         
  519: 
  520: 
  521: def addDirsToIndexMeta(path,folder_name,content_description,content_type):
  522:         #f=file(path+"/index.meta",r)
  523:         dom=xml.dom.minidom.parse(path+"/index.meta")
  524:         node=dom.getElementsByTagName('resource')[0] #getNode
  525: 
  526:         subnode=dom.createElement('dir')
  527:         
  528:         namenode=dom.createElement('name')
  529:         namenodetext=dom.createTextNode(folder_name)
  530:         namenode.appendChild(namenodetext)
  531:         subnode.appendChild(namenode)
  532:             
  533:         descriptionnode=dom.createElement('description')
  534:         descriptionnodetext=dom.createTextNode(content_description)
  535:         descriptionnode.appendChild(descriptionnodetext)
  536:         subnode.appendChild(descriptionnode)
  537: 
  538:         contentnode=dom.createElement('content-type')
  539:         contentnodetext=dom.createTextNode(content_type)
  540:         contentnode.appendChild(contentnodetext)
  541:         subnode.appendChild(contentnode)
  542:         
  543:         node.appendChild(subnode)
  544: 
  545:         writefile=file(path+"/index.meta","w")
  546:         writefile.write(dom.toxml(encoding='UTF-8'))
  547:         writefile.close()
  548: 
  549: def readArchimedesXML(folder):
  550:         """gib URL aus """
  551:         XML=urllib.urlopen("http://archimedes.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.cgi?step=xmlcorpusmanifest").read()
  552:         #print XML
  553:         dom=xml.dom.minidom.parseString(XML)
  554:         items=dom.getElementsByTagName('item')
  555:         dict={}
  556:         
  557:         for item in items:
  558:                 #print item.attributes['dir'].value
  559:                 try:            
  560:                         dict[item.attributes['dir'].value]=item.attributes['xml'].value
  561:                         #print item.attributes['dir'].value,item.attributes['text'].value
  562:                 except:
  563:                         """nothing"""
  564:                 
  565:         if dict.has_key(folder):
  566:                 return dict[folder]
  567:         else:
  568:                 return ""
  569:         
  570: 
  571:         
  572: 
  573: def combineTextImage2(self,path):
  574:         """erstellt bzw. ändert texttool meta tag"""
  575:         dom=xml.dom.minidom.parse(path+"/index.meta")
  576:         node=dom.getElementsByTagName('meta')[0] #getNode
  577: 
  578: 
  579:         subnodelist=node.getElementsByTagName('texttool')
  580:         if not len(subnodelist)==0: #texttool tag existiert schon, dann löschen
  581:                 subnode=node.removeChild(subnodelist[0])
  582:                 subnode.unlink()
  583: 
  584:         subnode=dom.createElement('texttool') #neu erzeugen
  585: 
  586:         
  587:         presentfile=os.listdir(path+"/"+self.REQUEST['presentation'])[0]
  588:         
  589: 
  590:         displaynode=dom.createElement('display')
  591:         displaynodetext=dom.createTextNode('yes')
  592:         displaynode.appendChild(displaynodetext)
  593:         subnode.appendChild(displaynode)
  594:         
  595:         if self.REQUEST.has_key('image'):       
  596:                 namenode=dom.createElement('image')
  597:                 namenodetext=dom.createTextNode(self.REQUEST['image'])
  598:                 namenode.appendChild(namenodetext)
  599:                 subnode.appendChild(namenode)
  600:                 
  601:         if self.REQUEST.has_key('text'):                    
  602:                 textfile=os.listdir(path+"/"+self.REQUEST['text'])[0]
  603:                 textfoldernode=dom.createElement('text')
  604:                 textfoldernodetext=dom.createTextNode(path+"/"+self.REQUEST['text']+"/"+textfile)
  605:                 textfoldernode.appendChild(textfoldernodetext)
  606:                 subnode.appendChild(textfoldernode)
  607: 
  608:         if self.REQUEST.has_key('external'):#USE CVS instead of local text
  609:                 textfoldernode=dom.createElement('text')
  610:                 textfoldernodetext=dom.createTextNode(self.REQUEST.SESSION['externxml'])
  611:                 textfoldernode.appendChild(textfoldernodetext)
  612:                 subnode.appendChild(textfoldernode)
  613:                 
  614:         if self.REQUEST.has_key('pagebreak'):   
  615:                 pagebreaknode=dom.createElement('pagebreak')
  616:                 pagebreaknodetext=dom.createTextNode(self.REQUEST['pagebreak'])
  617:                 pagebreaknode.appendChild(pagebreaknodetext)
  618:                 subnode.appendChild(pagebreaknode)
  619: 
  620:         if self.REQUEST.has_key('presentation'):        
  621:                 presentationnode=dom.createElement('presentation')
  622:                 presentationnodetext=dom.createTextNode(self.REQUEST['presentation']+"/"+presentfile)
  623:                 presentationnode.appendChild(presentationnodetext)
  624:                 subnode.appendChild(presentationnode)
  625:         
  626: 
  627:         if self.REQUEST.has_key('xslt'):
  628:                 if not self.REQUEST['xslt']=="":
  629:                         xsltnode=dom.createElement('xslt')
  630:                         xsltnodetext=dom.createTextNode(self.REQUEST['xslt'])
  631:                         xsltnode.appendChild(xsltnodetext)
  632:                         subnode.appendChild(xsltnode)
  633: 
  634:         
  635:         if self.REQUEST.has_key('thumbtemplate'):
  636:                 if not self.REQUEST['thumbtemplate']=="":
  637:                         xsltnode=dom.createElement('thumbtemplate')
  638:                         xsltnodetext=dom.createTextNode(self.REQUEST['thumbtemplate'])
  639:                         xsltnode.appendChild(xsltnodetext)
  640:                         subnode.appendChild(xsltnode)
  641: 
  642:         if self.REQUEST.has_key('topbar'):
  643:                 if not self.REQUEST['topbar']=="":
  644:                         xsltnode=dom.createElement('toptemplate')
  645:                         xsltnodetext=dom.createTextNode(self.REQUEST['topbar'])
  646:                         xsltnode.appendChild(xsltnodetext)
  647:                         subnode.appendChild(xsltnode)
  648: 
  649:         if self.REQUEST.has_key('startpage'):
  650:                 if not self.REQUEST['startpage']=="":
  651:                         xsltnode=dom.createElement('startpage')
  652:                         xsltnodetext=dom.createTextNode(self.REQUEST['startpage'])
  653:                         xsltnode.appendChild(xsltnodetext)
  654:                         subnode.appendChild(xsltnode)
  655: 
  656:         if self.REQUEST.has_key('project'):
  657:                 if not self.REQUEST['project']=="":
  658:                         xsltnode=dom.createElement('project')
  659:                         xsltnodetext=dom.createTextNode(self.REQUEST['project'])
  660:                         xsltnode.appendChild(xsltnodetext)
  661:                         subnode.appendChild(xsltnode)
  662: 
  663:         if self.REQUEST.has_key('digiliburlprefix'):
  664:                 if not self.REQUEST['digiliburlprefix']=="":
  665:                         xsltnode=dom.createElement('digiliburlprefix')
  666:                         xsltnodetext=dom.createTextNode(self.REQUEST['digiliburlprefix'])
  667:                         xsltnode.appendChild(xsltnodetext)
  668:                         subnode.appendChild(xsltnode)
  669:                         
  670:         node.appendChild(subnode)
  671:         
  672:         try:
  673:                 node2=node.getElementsByTagName('bib')[0]
  674:                 subs=node2.getElementsByTagName('lang')
  675:                 for sub in subs:
  676:                         node2.removeChild(sub)
  677:         except:
  678:                 """nothing"""
  679:         try:
  680:                 main=dom.getElementsByTagName('bib')[0]
  681:                 node=dom.createElement('lang')
  682:                 textnode=dom.createTextNode(self.REQUEST['lang'])
  683:                 node.appendChild(textnode)
  684:                 main.appendChild(node)
  685:         except:
  686:                 try:
  687:                         subs=dom.getElementsByTagName('lang')
  688:                         main=dom.getElementsByTagName('resource')[0]
  689:                         for sub in subs:
  690:                                 main.removeChild(sub)
  691:                 except:
  692:                         """nothing"""
  693:                 
  694:                 try:
  695:                         main=dom.getElementsByTagName('resource')[0]
  696:                         node=dom.createElement('lang')
  697:                         textnode=dom.createTextNode(self.REQUEST['lang'])
  698:                         #print "LANG:",self.REQUEST['lang']
  699:                         node.appendChild(textnode)
  700:                         main.appendChild(node)
  701:                 except:
  702:                         """nothing"""
  703:                         
  704:         writefile=file(path+"/index.meta","w")
  705:         writefile.write(dom.toxml(encoding="UTF-8"))
  706:         writefile.close()
  707:         
  708:         
  709: 
  710: #        urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
  711: #
  712: #        if self.REQUEST.has_key('image'): # falls bilder
  713: #                path=re.sub('//','/',self.REQUEST['path']) # falls '//' im Pfad
  714: #                dlpath = re.sub('/mpiwg/online/','',path)+"/"+self.REQUEST['image']
  715: #
  716: #                logger('OSas',logging.INFO,"ssh archive@nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat -src=/mpiwg/online -dest=/mpiwg/temp/online/scaled/thumb -dir=%s -scaleto=90 -sync >> /tmp/sc.out &"%dlpath )
  717: #                ret=os.popen("ssh archive@nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat -src=/mpiwg/online -dest=/mpiwg/temp/online/scaled/thumb -dir=%s -scaleto=90 -sync >> /tmp/sc.out &"%dlpath ).read()
  718: #                logger('OSAS (combine)',logging.INFO,ret)
  719: 
  720: 
  721: 
  722:         #else: # falls keine Bilder (bug in reg.cgi info file ersetzen)
  723:         #        f=file("/tmp/tmp_info.xml","w")
  724:         #        tmp=patchedInfoXML(self.REQUEST['path'])
  725:         #        f.write(tmp.encode('utf-8'))
  726:         #        f.close()
  727:         #        splitted=path.split("/")
  728:         #        fn=splitted[len(splitted)-1]
  729:         #        remotePath="archive@nausikaa2.rz-berlin.mpg.de:/usr/local/share/archimedes/web/docs/proj/echo/1/docs/"+fn+"/info.xml"
  730:         #        os.popen("scp /tmp/tmp_info.xml %s"%remotePath)
  731: 
  732: def patchedInfoXML(path):
  733:         dom=xml.dom.minidom.parse(path+"/index.meta")
  734:         
  735:         ret="<info>\n"
  736:         ret+="<remotetext>%s</remotetext>\n"%archive.getText(dom.getElementsByTagName('text')[0].childNodes)
  737:         ret+="<pagebreak>%s</pagebreak>\n"%archive.getText(dom.getElementsByTagName('pagebreak')[0].childNodes)
  738:         ret+="<display>%s</display>\n"%archive.getText(dom.getElementsByTagName('display')[0].childNodes)
  739:         try:
  740:                 ret+="<toptemplate>%s</toptemplate>\n"%archive.getText(dom.getElementsByTagName('toptemplate')[0].childNodes)
  741:         except:
  742:                 """not"""
  743:         try:
  744:                 ret+="<thumbtemplate>%s</thumbtemplate>\n"%archive.getText(dom.getElementsByTagName('thumbtemplate')[0].childNodes)
  745:         except:
  746:                 """not"""
  747:         try:
  748:                 ret+="<startpage>%s</startpage>\n"%archive.getText(dom.getElementsByTagName('startpage')[0].childNodes)
  749:         except:
  750:                 """not"""
  751:                 
  752:         ret+="<lang>%s</lang>\n"%archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
  753:         try:
  754:                 ret+="<author>%s</author>\n"%archive.getText(dom.getElementsByTagName('author')[0].childNodes)
  755:         except:
  756:                 """not"""
  757:         try:
  758:                 ret+="<title>%s</title>\n"%archive.getText(dom.getElementsByTagName('title')[0].childNodes)
  759:         except:
  760:                 """not"""
  761:                 
  762:         ret+="</info>"
  763: 
  764:         return ret

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