File:  [Repository] / OSAS / OSA_system / OSAS_add.py
Revision 1.48: download - view: text, annotated - select for diffs - revision graph
Mon Jul 3 17:40:18 2006 UTC (17 years, 11 months ago) by casties
Branches: MAIN
CVS tags: HEAD
fixed log output for scaleomat

#Neue Version Begin 5.4.2004


"""Methoden zum hinzufügen von Dokumenten ins Archiv"""
from OSAS_helpers import readArchimedesXML 
try:
        import archive
except:
        print "archive not imported"
        
import os
import os.path
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
import string
import urllib
import zLOG
import xml.dom.minidom
from time import localtime,strftime
from Globals import package_home
from types import *

import re
def showHelp(helptext):
        """show helptext"""
        return """<html>
        <body>
        %
        </body>
        </html>"""%helptext
def add(self, no_upload=0):
        """ Add metadata or metadata and documents to the repository
        no_upload=0 kein upload sonst upload von documententen"""

        #self.referencetypes=self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping'])
        self.referencetypes=self.ZopeFind(self)
        
        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_new')).__of__(self)
        self.REQUEST.SESSION['path']=self.REQUEST['path']
        if no_upload==0:
                self.REQUEST.SESSION['no_upload']='yes'
        else:
                if self.REQUEST.SESSION.has_key('no_upload'):
                        del self.REQUEST.SESSION['no_upload']
                        
        return newtemplate()



def getISO():
        """ISO"""
        try:
                f=file(os.path.join(package_home(globals()),'iso639-1.inc'),'r').readlines()

                ret={}
                for lineraw in f:
                        line=lineraw.encode('ascii','replace').strip()
                        value=string.split(line,'\t')[0].encode('ascii','replace')
                        key=string.split(line,'\t')[1].encode('ascii','replace')
                        ret[key]=value
        except:
                ret={}
        return ret


def add2(self):
        self.reftype=self.REQUEST['Reference Type']
        self.REQUEST.SESSION['reftype']=self.reftype
        self.bibdata={}
        for referenceType in self.referencetypes:
                #print referenceType
                if referenceType[1].title == self.reftype: 
                        self.bibdata[referenceType[1].title]=referenceType[1].fields
                        self.bibdata['data']=referenceType[1]
                        self.fields=self.bibdata[self.reftype]
        
        self.isolist=getISO()
        tmp=getISO().keys()
        tmp.sort()
        self.isokeys=tmp
        #listed=[ x for x in self.isolist.keys()]
        #print listed
        #sorted=listed.sort()
        #print sorted
        
        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_bibdata')).__of__(self)
        return newtemplate()
        #return self.fields


def parse_query_string(str):
        queries={}
        key=""
        value=""
        tmp=""
        toggle="key"
        str=urllib.unquote(str)
        for i in str:
                if i=="=":
                        key=tmp
                        toggle="value"                          
                        tmp=""
                elif i=="&":
                        queries[key]=tmp
                        tmp=""
                        toggle="key"
                else:
                        if toggle=="key":
                                if i=="+" : i="-"
                        else:
                                if i=="+" : i=" "
                        tmp=tmp+i
        queries[key]=tmp
        return queries
        
def add3(self):
        """Foldername"""
        metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
        self.REQUEST.SESSION['metadata']=metadata
        vorschlag=[]

        if metadata.has_key('author'):
                vorschlag.append(metadata['author'][:5])
        if metadata.has_key('title'):
                vorschlag.append(metadata['title'][:5])
        if metadata.has_key('year'):
                vorschlag.append(metadata['year'])
        
                
        vorschlag_naming=string.join(vorschlag,"_")
        
                
        self.vorschlag_naming=unicode(vorschlag_naming,'ascii','ignore')
        if self.REQUEST.SESSION.has_key('no_upload'):
                self.REQUEST.SESSION['folder_name']=self.REQUEST.SESSION['path']
                return add5(self)
        else:
                newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_naming')).__of__(self)
                return newtemplate()
        

def add4(self):

        self.path=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
        
        self.folder_name=self.REQUEST['folder_name']
        # next has to be changed -> error if back button is used!!
        self.REQUEST.SESSION['folder_name']=self.folder_name
        #return self.REQUEST['submit']

        try:    
                #os.popen('mkdir '+self.REQUEST.SESSION['path'])
                os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
                os.chmod(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']),0775)

        except:

                """nothing"""

        if self.REQUEST['submit']=="upload images":
                self.REQUEST.SESSION['path']=os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name'])
                

                self.image_folder_name="pageimg"
                newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_upload')).__of__(self)
                
                return newtemplate()
        
        elif self.REQUEST['submit']=="upload pdf":
                os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
                return addPdf(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
        else:
                os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
                return addText(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
        
        
def add5(self):
        """ADD INDEX.META"""
        try:
                os.chmod(self.REQUEST.SESSION['path'],0775)
        except:
                pass

        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_metadata')).__of__(self)
        return newtemplate()

def add6(self):
        metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
        metadata['archive-path']=os.path.split(self.REQUEST.SESSION['path'])[0]
        #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
        metadata['folder_name']=os.path.split(self.REQUEST.SESSION['path'])[1]
        metadata['content-type']="scanned document"
        self.reftype=self.REQUEST.SESSION['reftype']
        self.REQUEST.SESSION['add_metadata']=metadata   
        self.add_metadata=metadata
        self.metadata=self.REQUEST.SESSION['metadata']
        self.metadataprint=""
        for tag in self.metadata.keys():
                if tag!="":
                        self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"

        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self)
        newtemplate.content_type="text/plain"
        renderxml = newtemplate(encode='utf-8')
        
                
        if self.REQUEST.SESSION.has_key('no_upload'):
                metapath=self.REQUEST.SESSION['path']+"/index.meta"
        else:
                metapath=self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']+"/index.meta"
        
        f=open(metapath,'w')
        try:
                f.write(renderxml.encode('utf-8'))
        except:
                f.write(unicode(renderxml,'latin-1').encode('utf-8'))
                #f.write(renderxml)

        f.close()
        os.chmod(metapath,0664)
        os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']) 
        if self.REQUEST.SESSION.has_key('no_upload'):
                
                #newtemplate2=PageTemplateFile('/usr/local/mpiwg/Zope/Extensions/done',"text/html").__of__(self)
                return self.REQUEST.response.redirect(self.REQUEST['URL2']+"?path="+self.REQUEST.SESSION['path'])
        else:
                #print self.add_metadata['archive-path']
                self.viewpath=re.search(r"/mpiwg/online/(.*)",self.add_metadata['archive-path']).group(1)
        
        if (self.REQUEST.SESSION.has_key('no_upload')) and (self.REQUEST.SESSION['no_upload']=="text"):
                        """text upload"""
                        return 1
        else:   
                        newtemplate2=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_saved')).__of__(self)
                        newtemplate2.content_type="text/html"
                        self.REQUEST.response.setHeader('Content-Type','text/html')
                        return newtemplate2()
                


def date(self):
        return strftime("%d.%m.%Y",localtime()) 


def addPresentation(self,path):
        """add presentation to the path"""
        
        dom=xml.dom.minidom.parse(path+"/index.meta")
        
        
        try:
                author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)
        except:
                try:
                        author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes)
                except:
                        try:
                                author=archive.getText(dom.getElementsByTagName('Editor')[0].childNodes)
                        except:
                                author=""
        try:
                title=archive.getText(dom.getElementsByTagName('title')[0].childNodes)
        except:
                title=""
                
        try:
                date=archive.getText(dom.getElementsByTagName('year')[0].childNodes)
        except:
                try:
                        date=archive.getText(dom.getElementsByTagName('Year')[0].childNodes)
                except:
                        try:
                                date=archive.getText(dom.getElementsByTagName('date')[0].childNodes)
                        except:
                                date=""
        i=1
        while os.path.exists(path+"/%02d-presentation"%i):
                i+=1
        self.REQUEST.SESSION['presentationname']="%02d-presentation"%i
        self.REQUEST.SESSION['path']=path

        tmpTxt="""<?xml version="1.0" encoding="UTF-8"?>
        <info>
        <author>%s</author>
        <title>%s</title>
        <date>%s</date>
        <display>yes</display>
</info>"""%(author,title,date)
        
        self.REQUEST.SESSION['xmlvorschlag']=tmpTxt.encode('utf-8')
        
        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPresentation')).__of__(self)
        return newtemplate()

def addPresentation2(self):
        """add presentation """
        folder_name=self.REQUEST['folder_name']
        #print self.REQUEST['folder_name']
        content_description=self.REQUEST['content_description']

        path=self.REQUEST.SESSION['path']

        if not self.REQUEST.has_key('fileupload'):
                xmlinfo=self.REQUEST['xmltext']
                file_name="info.xml"

        else:
                file_name=self.REQUEST['fileupload'].filename
                xmlinfo=self.REQUEST.form['fileupload'].read()
                # hack Multipart auswertung funktioniert nicht ausser bei mozilla
                file_name="info.xml"
                xmlinfo=self.REQUEST['xmltext']
        try:
                os.mkdir(path+"/"+folder_name)
        except:
                """nothing"""
        #print "NAME:",file_name
        f=open(path+"/"+folder_name+"/"+file_name,"w")
        f.write(xmlinfo)
        f.close()
        try:
                os.chmod(path+"/"+folder_name,0775)
        except:
                """NO"""

        os.chmod(path+"/"+folder_name+"/"+file_name,0664)
        addDirsToIndexMeta(path,folder_name,content_description,'presentation')
        
        return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)


def addPdf(self,path,folder=None):
        """add fulltext to the path"""
        self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
        self.REQUEST.SESSION['pathnew']=path
        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPdf')).__of__(self)
        return newtemplate()

def addPdf2(self):
        """addtext"""
        folder_name="pdf" # foldername fixed
        
        if self.REQUEST['file_name']=="":
                file_name=self.REQUEST['fileupload'].filename
        else:
                file_name=self.REQUEST['file_name']
                
        #print self.REQUEST['folder_name']
        content_description=self.REQUEST['content_description']
        path=self.REQUEST.SESSION['pathnew']

        filedata=self.REQUEST.form['fileupload'].read()
        try:
                os.mkdir(path+"/"+folder_name)
        except:
                """nothing"""
        f=open(path+"/"+folder_name+"/"+file_name,"w")
        f.write(filedata)
        f.close()
        os.chmod(path+"/"+folder_name,0755)
        os.chmod(path+"/"+folder_name+"/"+file_name,0644)
        addDirsToIndexMeta(path,folder_name,content_description,'pdf')

        return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)

def addText(self,path,folder=None):
        """add fulltext to the path"""
        self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
        self.REQUEST.SESSION['pathnew']=path
        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addText')).__of__(self)
        return newtemplate()

def addText2(self):
        """addtext"""
        folder_name=self.REQUEST['folder_name']
        #print self.REQUEST['folder_name']
        content_description=self.REQUEST['content_description']
        path=self.REQUEST.SESSION['pathnew']
        file_name=self.REQUEST['fileupload'].filename
        filedata=self.REQUEST.form['fileupload'].read()
        os.mkdir(path+"/"+folder_name)
        f=open(path+"/"+folder_name+"/"+file_name,"w")
        f.write(filedata)
        f.close()
        os.chmod(path+"/"+folder_name,0755)
        os.chmod(path+"/"+folder_name+"/"+file_name,0644)
        addDirsToIndexMeta(path,folder_name,content_description,'fulltext')

        return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)

def addTextExternal(self,path,texturl,version):
        """hinzufügen eines externen textes"""
        try: #neue text version einlesen
                texttemp=urllib.urlopen(texturl).readlines()
                text=""
                for line in texttemp:
                        text=text+line
        except: #fehler beim lesen des textes
                return "ERROR: cannot read: %s"%texturl
        if TextExternalError(text): #kein xml header
                return "ERROR: cannot read: %s"%texturl, "received:",text 
        textpath=getNewTextPath(path) #erzeuge neuen Ornder für den Text
        splitted=string.split(texturl,"/")
        name=splitted[len(splitted)-1] #Name des XML-files
        try:
                writefile=file(path+"/"+textpath+"/"+name,"w")
        except:
                return"ERROR: cannot write: %s"%path+"/"+textpath+"/"+name
        writefile.write(text)
        writefile.close()
        os.chmod(path+"/"+textpath+"/"+name,0644)

        #add new file to XML
        dom=xml.dom.minidom.parse(path+"/index.meta")
        node=dom.getElementsByTagName('resource')[0] #getNode

        subnode=dom.createElement('dir')
        
        namenode=dom.createElement('name')
        namenodetext=dom.createTextNode(textpath)
        namenode.appendChild(namenodetext)
        subnode.appendChild(namenode)
            
        descriptionnode=dom.createElement('description')
        descriptionnodetext=dom.createTextNode('archimedes text:'+version)
        descriptionnode.appendChild(descriptionnodetext)
        subnode.appendChild(descriptionnode)

        contentnode=dom.createElement('content-type')
        contentnodetext=dom.createTextNode('fulltext')
        contentnode.appendChild(contentnodetext)
        subnode.appendChild(contentnode)
        
        node.appendChild(subnode)

        writefile=file(path+"/index.meta","w")
        writefile.write(dom.toxml(encoding="UTF-8"))
        writefile.close()

        #change texttool tag
        dom=xml.dom.minidom.parse(path+"/index.meta")
        node=dom.getElementsByTagName('meta')[0] #getNode

        try: #texttool existiert schon
                subnode=node.getElementsByTagName('texttool')[0]
        except: #wenn nicht Fehler ausgeben
                return "ERROR:no presentation configured yet, user Web Front End to do so!"
        

        try:
                texttoolnodelist=subnode.getElementsByTagName('text')
        
                if not len(texttoolnodelist)==0: #texttool tag existiert schon, dann löschen
                        subsubnode=subnode.removeChild(texttoolnodelist[0])
                        subsubnode.unlink()
        except:
                """nothing"""
        # text neu anlegen
        textfoldernode=dom.createElement('text')
        textfoldernodetext=dom.createTextNode(textpath+"/"+name)
        textfoldernode.appendChild(textfoldernodetext)
        subnode.appendChild(textfoldernode)

        #index.meta ausgeben
        writefile=file(path+"/index.meta","w")
        writefile.write(dom.toxml(encoding="UTF-8"))
        writefile.close()
        
        #registrieren
        return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
        
        

def TextExternalError(text):
        firsts=text[0:10]
        #print firsts
        try:
                match=re.search(r".*<?xml.*",firsts)
        except:
                return 1
        return 0

def getNewTextPath(path):
        i=1
        while os.path.exists(path+"/fulltext%i"%i):
                i+=1
        os.mkdir(path+"/fulltext%i"%i)
        os.chmod(path+"/fulltext%i"%i,0755)
        return "fulltext%i"%i

def addImages(self,path):
        """Imagesfolder to the path"""
        self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing pageimages files
        self.REQUEST.SESSION['path']=path
        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_addImages')).__of__(self)
        return newtemplate()

def addImages2(self):
        
        self.image_folder_name=self.REQUEST['folder_name']
        #print self.REQUEST['folder_name']
        self.content_description=self.REQUEST['content_description']
        #self.path=self.REQUEST.SESSION['path']
        
        
        self.content_type='images'
        addDirsToIndexMeta(self.REQUEST.SESSION['path'],self.image_folder_name,self.content_description,self.content_type)
        self.REQUEST.SESSION['path']=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
        newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_upload2')).__of__(self)
        return newtemplate()
        


def addDirsToIndexMeta(path,folder_name,content_description,content_type):
        #f=file(path+"/index.meta",r)
        dom=xml.dom.minidom.parse(path+"/index.meta")
        node=dom.getElementsByTagName('resource')[0] #getNode

        subnode=dom.createElement('dir')
        
        namenode=dom.createElement('name')
        namenodetext=dom.createTextNode(folder_name)
        namenode.appendChild(namenodetext)
        subnode.appendChild(namenode)
            
        descriptionnode=dom.createElement('description')
        descriptionnodetext=dom.createTextNode(content_description)
        descriptionnode.appendChild(descriptionnodetext)
        subnode.appendChild(descriptionnode)

        contentnode=dom.createElement('content-type')
        contentnodetext=dom.createTextNode(content_type)
        contentnode.appendChild(contentnodetext)
        subnode.appendChild(contentnode)
        
        node.appendChild(subnode)

        writefile=file(path+"/index.meta","w")
        writefile.write(dom.toxml(encoding='UTF-8'))
        writefile.close()

def readArchimedesXML(folder):
        """gib URL aus """
        XML=urllib.urlopen("http://archimedes.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.cgi?step=xmlcorpusmanifest").read()
        #print XML
        dom=xml.dom.minidom.parseString(XML)
        items=dom.getElementsByTagName('item')
        dict={}
        
        for item in items:
                #print item.attributes['dir'].value
                try:            
                        dict[item.attributes['dir'].value]=item.attributes['xml'].value
                        #print item.attributes['dir'].value,item.attributes['text'].value
                except:
                        """nothing"""
                
        if dict.has_key(folder):
                return dict[folder]
        else:
                return ""
        

        

def combineTextImage2(self,path):
        """erstellt bzw. ändert texttool meta tag"""
        dom=xml.dom.minidom.parse(path+"/index.meta")
        node=dom.getElementsByTagName('meta')[0] #getNode


        subnodelist=node.getElementsByTagName('texttool')
        if not len(subnodelist)==0: #texttool tag existiert schon, dann löschen
                subnode=node.removeChild(subnodelist[0])
                subnode.unlink()

        subnode=dom.createElement('texttool') #neu erzeugen

        
        presentfile=os.listdir(path+"/"+self.REQUEST['presentation'])[0]
        

        displaynode=dom.createElement('display')
        displaynodetext=dom.createTextNode('yes')
        displaynode.appendChild(displaynodetext)
        subnode.appendChild(displaynode)
        
        if self.REQUEST.has_key('image'):       
                namenode=dom.createElement('image')
                namenodetext=dom.createTextNode(self.REQUEST['image'])
                namenode.appendChild(namenodetext)
                subnode.appendChild(namenode)
                
        if self.REQUEST.has_key('text'):                    
                textfile=os.listdir(path+"/"+self.REQUEST['text'])[0]
                textfoldernode=dom.createElement('text')
                textfoldernodetext=dom.createTextNode(path+"/"+self.REQUEST['text']+"/"+textfile)
                textfoldernode.appendChild(textfoldernodetext)
                subnode.appendChild(textfoldernode)

        if self.REQUEST.has_key('external'):#USE CVS instead of local text
                textfoldernode=dom.createElement('text')
                textfoldernodetext=dom.createTextNode(self.REQUEST.SESSION['externxml'])
                textfoldernode.appendChild(textfoldernodetext)
                subnode.appendChild(textfoldernode)
                
        if self.REQUEST.has_key('pagebreak'):   
                pagebreaknode=dom.createElement('pagebreak')
                pagebreaknodetext=dom.createTextNode(self.REQUEST['pagebreak'])
                pagebreaknode.appendChild(pagebreaknodetext)
                subnode.appendChild(pagebreaknode)

        if self.REQUEST.has_key('presentation'):        
                presentationnode=dom.createElement('presentation')
                presentationnodetext=dom.createTextNode(self.REQUEST['presentation']+"/"+presentfile)
                presentationnode.appendChild(presentationnodetext)
                subnode.appendChild(presentationnode)
        

        if self.REQUEST.has_key('xslt'):
                if not self.REQUEST['xslt']=="":
                        xsltnode=dom.createElement('xslt')
                        xsltnodetext=dom.createTextNode(self.REQUEST['xslt'])
                        xsltnode.appendChild(xsltnodetext)
                        subnode.appendChild(xsltnode)

        
        if self.REQUEST.has_key('thumbtemplate'):
                if not self.REQUEST['thumbtemplate']=="":
                        xsltnode=dom.createElement('thumbtemplate')
                        xsltnodetext=dom.createTextNode(self.REQUEST['thumbtemplate'])
                        xsltnode.appendChild(xsltnodetext)
                        subnode.appendChild(xsltnode)

        if self.REQUEST.has_key('topbar'):
                if not self.REQUEST['topbar']=="":
                        xsltnode=dom.createElement('toptemplate')
                        xsltnodetext=dom.createTextNode(self.REQUEST['topbar'])
                        xsltnode.appendChild(xsltnodetext)
                        subnode.appendChild(xsltnode)

        if self.REQUEST.has_key('startpage'):
                if not self.REQUEST['startpage']=="":
                        xsltnode=dom.createElement('startpage')
                        xsltnodetext=dom.createTextNode(self.REQUEST['startpage'])
                        xsltnode.appendChild(xsltnodetext)
                        subnode.appendChild(xsltnode)

        if self.REQUEST.has_key('project'):
                if not self.REQUEST['project']=="":
                        xsltnode=dom.createElement('project')
                        xsltnodetext=dom.createTextNode(self.REQUEST['project'])
                        xsltnode.appendChild(xsltnodetext)
                        subnode.appendChild(xsltnode)

        if self.REQUEST.has_key('digiliburlprefix'):
                if not self.REQUEST['digiliburlprefix']=="":
                        xsltnode=dom.createElement('digiliburlprefix')
                        xsltnodetext=dom.createTextNode(self.REQUEST['digiliburlprefix'])
                        xsltnode.appendChild(xsltnodetext)
                        subnode.appendChild(xsltnode)
                        
        node.appendChild(subnode)
        
        try:
                node2=node.getElementsByTagName('bib')[0]
                subs=node2.getElementsByTagName('lang')
                for sub in subs:
                        node2.removeChild(sub)
        except:
                """nothing"""
        try:
                main=dom.getElementsByTagName('bib')[0]
                node=dom.createElement('lang')
                textnode=dom.createTextNode(self.REQUEST['lang'])
                node.appendChild(textnode)
                main.appendChild(node)
        except:
                try:
                        subs=dom.getElementsByTagName('lang')
                        main=dom.getElementsByTagName('resource')[0]
                        for sub in subs:
                                main.removeChild(sub)
                except:
                        """nothing"""
                
                try:
                        main=dom.getElementsByTagName('resource')[0]
                        node=dom.createElement('lang')
                        textnode=dom.createTextNode(self.REQUEST['lang'])
                        #print "LANG:",self.REQUEST['lang']
                        node.appendChild(textnode)
                        main.appendChild(node)
                except:
                        """nothing"""
                        
        writefile=file(path+"/index.meta","w")
        writefile.write(dom.toxml(encoding="UTF-8"))
        writefile.close()
        
        

        urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()

        if self.REQUEST.has_key('image'): # falls bilder
                path=re.sub('//','/',self.REQUEST['path']) # falls '//' im Pfad
                dlpath = re.sub('/mpiwg/online/','',path)+"/"+self.REQUEST['image']

                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=100 -sync >> /tmp/sc.out &"%dlpath )
                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=100 -sync >> /tmp/sc.out &"%dlpath ).read()
                zLOG.LOG('OSAS (combine)',zLOG.INFO,ret)



        else: # falls keine Bilder (bug in reg.cgi info file ersetzen)
                f=file("/tmp/tmp_info.xml","w")
                tmp=patchedInfoXML(self.REQUEST['path'])
                f.write(tmp.encode('utf-8'))
                f.close()
                splitted=path.split("/")
                fn=splitted[len(splitted)-1]
                remotePath="archive@nausikaa2.rz-berlin.mpg.de:/usr/local/share/archimedes/web/docs/proj/echo/1/docs/"+fn+"/info.xml"
                os.popen("scp /tmp/tmp_info.xml %s"%remotePath)

def patchedInfoXML(path):
        dom=xml.dom.minidom.parse(path+"/index.meta")
        
        ret="<info>\n"
        ret+="<remotetext>%s</remotetext>\n"%archive.getText(dom.getElementsByTagName('text')[0].childNodes)
        ret+="<pagebreak>%s</pagebreak>\n"%archive.getText(dom.getElementsByTagName('pagebreak')[0].childNodes)
        ret+="<display>%s</display>\n"%archive.getText(dom.getElementsByTagName('display')[0].childNodes)
        try:
                ret+="<toptemplate>%s</toptemplate>\n"%archive.getText(dom.getElementsByTagName('toptemplate')[0].childNodes)
        except:
                """not"""
        try:
                ret+="<thumbtemplate>%s</thumbtemplate>\n"%archive.getText(dom.getElementsByTagName('thumbtemplate')[0].childNodes)
        except:
                """not"""
        try:
                ret+="<startpage>%s</startpage>\n"%archive.getText(dom.getElementsByTagName('startpage')[0].childNodes)
        except:
                """not"""
                
        ret+="<lang>%s</lang>\n"%archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
        try:
                ret+="<author>%s</author>\n"%archive.getText(dom.getElementsByTagName('author')[0].childNodes)
        except:
                """not"""
        try:
                ret+="<title>%s</title>\n"%archive.getText(dom.getElementsByTagName('title')[0].childNodes)
        except:
                """not"""
                
        ret+="</info>"

        return ret

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