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

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

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