Annotation of OSAS/OSA_system/OSAS_add.py, revision 1.46

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

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