Annotation of OSAS/OSA_system/OSAS_archiver.py.~1.4.~, revision 1.1

1.1     ! dwinter     1: # Methoden und Klassen fuer den MPIWG Archiver
        !             2: 
        !             3: from OFS.Image import Image
        !             4: from OFS.Folder import Folder
        !             5: from OFS.SimpleItem import SimpleItem
        !             6: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
        !             7: from Products.PageTemplates.PageTemplate import PageTemplate
        !             8: from AccessControl import ClassSecurityInfo
        !             9: from Globals import InitializeClass
        !            10: from Globals import Persistent
        !            11: from Acquisition import Implicit
        !            12: from OSAS_show import *
        !            13: from OSAS_helpers import *
        !            14: 
        !            15: import os.path
        !            16: import os
        !            17: import OSAS_ids
        !            18: import archive #Baustelle
        !            19: import time
        !            20: 
        !            21: class OSAS_archiveInbox(SimpleItem,Persistent,Implicit):
        !            22:     """Inbox"""
        !            23: 
        !            24:     meta_type="OSAS_archiveInbox"
        !            25:     pathes=[]
        !            26:     
        !            27:     def __init__(self,id,title):
        !            28:         """init"""
        !            29:         self.id=id
        !            30:         self.title=title
        !            31:         self.pathes=[]
        !            32: 
        !            33:     def addPath(self,path):
        !            34:         today=time.localtime()
        !            35:         self.pathes.append([path,today])
        !            36: 
        !            37:     def index_html(self):
        !            38:         """main"""
        !            39:         pt=PageTemplateFile('Products/OSA_system/OSAS_archiveInboxIndex.zpt').__of__(self)
        !            40:         return pt()
        !            41:     
        !            42: def manage_AddOSAS_archiveInboxForm(self):
        !            43:     """interface for adding the OSAS_root"""
        !            44:     pt=PageTemplateFile('Products/OSA_system/AddOSAS_archiveInbox.zpt').__of__(self)
        !            45:     return pt()
        !            46: 
        !            47: 
        !            48: def manage_AddOSAS_archiveInbox(self,id,title="",RESPONSE=None):
        !            49:     """add the OSAS_root"""
        !            50:     if title=="":
        !            51:         title=id
        !            52:         
        !            53:     newObj=OSAS_archiveInbox(id, title)
        !            54:     self._setObject(id,newObj)
        !            55:     if RESPONSE is not None:
        !            56:         RESPONSE.redirect('manage_main')
        !            57:     
        !            58: 
        !            59: 
        !            60: class OSAS_metadataOrganizer(SimpleItem,Persistent,Implicit):
        !            61:     """Eingabe von Metadaten"""
        !            62: 
        !            63:     meta_type="OSAS_metadataOrganizer"
        !            64:     mediaTypes=["image","video","text","audio","data"]
        !            65:     acquisitionTypes=["Image-Acquisition"]
        !            66:     mediaToAcquisition={"image":"Image-Acquisition"}
        !            67:     metaDataSets={'Image-Acquisition': [('device','opt'),('image-type','opt'),('production-comment','opt')]}
        !            68:     imgData={'image':[('dpi','req')]}
        !            69:     
        !            70:     bibDataSets={'Book':[('author','opt'),('year','opt'),('title','opt'),('series editor','opt'),('series title','opt'),('series volume','opt'),('number of pages','opt'),('city','opt'),('publisher','opt'),('edition','opt'),('number of volumes','opt'),('translator','opt'),('ISBN ISSN','opt')],
        !            71:                   'Journal Article':[('author','opt'),('year','opt'),('title','opt'),('journal','opt'),('volume','opt'),('issue','opt'),('pages','opt'),('alternate journal','opt'),('call number','opt')],
        !            72:                   'Manuscript':[('author','opt'),('year','opt'),('title','opt'),('location','opt'),('signature','opt'),('pages','opt'),('editorial remarks','opt'),('description','opt'),('keywords','opt')]}
        !            73: 
        !            74: 
        !            75:     referenceTypes=['Book','Journal Article','Manuscript']
        !            76: 
        !            77:     def __init__(self,id,title):
        !            78:         """init"""
        !            79:         self.id=id
        !            80:         self.title=title
        !            81:         #self.acquisitionData=['provider_name','provider_address','provider_contact','provider_url','date','description']
        !            82: 
        !            83:     def addAcquisition(self,path):
        !            84:         """Hinzufügen von Acquisition Daten"""
        !            85:         self.REQUEST.SESSION['path']=path
        !            86:         pt=PageTemplateFile('Products/OSA_system/inputAcquisitionData.zpt').__of__(self)
        !            87:         return pt()
        !            88: 
        !            89:     def writeAcquisitionMetadata(self,date,path,media_type,producer="mpiwg",description=""):
        !            90:         """Schreibe Acquisiondata in index.meta"""
        !            91:         
        !            92:         
        !            93:         #schreibe in index.meta
        !            94:         subnodes={}
        !            95:         subnodes['media-type']=media_type
        !            96:         changeNodesInIndexMeta(path,"",subnodes)
        !            97:         
        !            98:         subnodes={}
        !            99:         subnodes['date']=date
        !           100:         subnodes['description']=description
        !           101:         
        !           102:         changeNodesInIndexMeta(path,"acquisition",subnodes)
        !           103:         #print "HI"
        !           104: 
        !           105:         subnodes={}
        !           106:         subnodes['provider-id']=producer
        !           107:         subnodes['url']=getattr(self.producerFolder,producer).url
        !           108:         subnodes['contact']=getattr(self.producerFolder,producer).contact
        !           109:         subnodes['address']=getattr(self.producerFolder,producer).address
        !           110:         
        !           111:         changeNodesInIndexMeta(path,"provider",subnodes,parent="acquisition")
        !           112: 
        !           113:         
        !           114:         self.metaDataSet=self.metaDataSets[self.mediaToAcquisition[media_type]]
        !           115:         self.media_type=self.mediaToAcquisition[media_type]
        !           116:         
        !           117:         pt=PageTemplateFile('Products/OSA_system/inputDocumentMetadata.zpt').__of__(self)
        !           118:         return pt()
        !           119: 
        !           120:         
        !           121:     def writeDocumentMetadata(self,referenceType):
        !           122: 
        !           123:         """write document metadata"""
        !           124:         form=self.REQUEST.form
        !           125: #schreibe in index.meta
        !           126:         self.bibDataSet=self.bibDataSets[form['referenceType']]
        !           127:         self.bibdata_type=form['referenceType']
        !           128: 
        !           129:         subnodes={}
        !           130:         subnodes['device']=form['device']
        !           131:         subnodes['image-type']=form['image-type']
        !           132:         subnodes['production-comment']=form['production-comment']
        !           133:         changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"image-acquisition",subnodes)
        !           134: 
        !           135:         subnodes={}
        !           136:         subnodes['dpi']=form['dpi']
        !           137: 
        !           138:         
        !           139:         changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"img",subnodes)
        !           140: 
        !           141: 
        !           142:         pt=PageTemplateFile('Products/OSA_system/inputBiblioMetadata.zpt').__of__(self)
        !           143:         return pt()
        !           144: 
        !           145:     def writeBiblioMetadata(self,bibdata_type,RESPONSE=None):
        !           146:         """Write all"""
        !           147:         #to do write metadata
        !           148: 
        !           149:         subnodes={}
        !           150:         form=self.REQUEST.form
        !           151:         #for key in form.keys():
        !           152:         #    subnodes[key]=form['device']
        !           153:         subnodes=form
        !           154:         changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"bib",subnodes,nodeAttributes={'type':bibdata_type},parent="meta")
        !           155:         self.inbox.addPath(self.REQUEST.SESSION['path'])
        !           156:         RESPONSE.redirect(self.REQUEST['URL2'])
        !           157:         
        !           158: 
        !           159: 
        !           160:     
        !           161:         
        !           162:     
        !           163: 
        !           164: def manage_AddOSAS_metadataOrganizerForm(self):
        !           165:     """interface for adding the OSAS_root"""
        !           166:     pt=PageTemplateFile('Products/OSA_system/AddOSAS_metadataOrganizer.zpt').__of__(self)
        !           167:     return pt()
        !           168: 
        !           169: 
        !           170: def manage_AddOSAS_metadataOrganizer(self,id,title="",RESPONSE=None):
        !           171:     """add the OSAS_root"""
        !           172:     if title=="":
        !           173:         title=id
        !           174:         
        !           175:     newObj=OSAS_metadataOrganizer(id, title)
        !           176:     self._setObject(id,newObj)
        !           177:     if RESPONSE is not None:
        !           178:         RESPONSE.redirect('manage_main')
        !           179:     
        !           180: 
        !           181: class OSAS_processViewer(SimpleItem,Persistent,Implicit):
        !           182:     """Process viewer for archiving"""
        !           183: 
        !           184:     meta_type="OSAS_processViewer"
        !           185: 
        !           186:     def __init__(self, id, title):
        !           187:         """init"""
        !           188:         self.id=id
        !           189:         self.title=title
        !           190: 
        !           191:     def index_html(self):
        !           192:         """main page"""
        !           193:         pt=PageTemplateFile('Products/OSA_system/processViewerIndex.zpt').__of__(self)
        !           194:         return pt()
        !           195: 
        !           196:     def storeFile(self,something):
        !           197:         """store info in session"""
        !           198:         self.REQUEST.SESSION['something']=something
        !           199:         return 1
        !           200: 
        !           201:     def getFile(self):
        !           202:         """get info from session"""
        !           203:         return self.REQUEST.SESSION['something']
        !           204: 
        !           205:     def getoverview(self,path):
        !           206:         """get overview"""
        !           207:         return archive.overview(path)
        !           208: 
        !           209:     def storeerror(self,ret,path,context,i):
        !           210:         """store an error"""
        !           211:         session=context.REQUEST.SESSION
        !           212:         session['error%i'%i]=ret
        !           213:         session['path%i'%i]=path
        !           214:      
        !           215:         return 'error?number=%i'%i
        !           216: 
        !           217:     def geterror(self,str,context):
        !           218:         session=context.REQUEST.SESSION
        !           219:         return session[str]
        !           220: 
        !           221: 
        !           222:     def readfile(self,path):
        !           223:         
        !           224:         ret=""
        !           225:         f=open(path,'r')
        !           226:         for g in f.readlines():
        !           227:             ret=ret+g
        !           228:         return ret
        !           229:      
        !           230:     def writefile(self,path,txt,REQUEST):
        !           231:         f=open(path,'w')
        !           232:         f.write(txt)
        !           233:         f.close()
        !           234:         rval=self.aq_acquire('archive2')
        !           235:         return rval()
        !           236: 
        !           237: 
        !           238:     def view(self):
        !           239:         """view page"""
        !           240:         pt=PageTemplateFile('Products/OSA_system/processViewerView.zpt').__of__(self)
        !           241:         return pt()
        !           242: 
        !           243:     def error(self):
        !           244:         """view errors"""
        !           245:         pt=PageTemplateFile('Products/OSA_system/processViewerError.zpt').__of__(self)
        !           246:         return pt()
        !           247:     
        !           248: def manage_AddOSAS_processViewerForm(self):
        !           249:     """interface for adding the OSAS_processViewer"""
        !           250:     pt=PageTemplateFile('Products/OSA_system/AddOSAS_processViewer.zpt').__of__(self)
        !           251:     return pt()
        !           252: 
        !           253: 
        !           254: def manage_AddOSAS_processViewer(self,id,title="",RESPONSE=None):
        !           255:     """add the OSAS_processViewer"""
        !           256:     if title=="":
        !           257:         title=id
        !           258:         
        !           259:     newObj=OSAS_processViewer(id, title)
        !           260:     self._setObject(id,newObj)
        !           261:     if RESPONSE is not None:
        !           262:         RESPONSE.redirect('manage_main')
        !           263: 
        !           264: 
        !           265: 
        !           266: class OSAS_archiver(Folder, Persistent,Implicit):
        !           267:     """Hauptklasse fuer das Archiv"""
        !           268: 
        !           269:     meta_type="OSAS_archiver"
        !           270: 
        !           271:     # to be deleted later
        !           272:     #startPath="/mpiwg"
        !           273:     ## methoden aus dem alten archive.py
        !           274: 
        !           275:    
        !           276: 
        !           277:     def archiver(self,path):
        !           278:         """archive the documents in path"""
        !           279:         tmp=archive.archive(path,self.REQUEST.SESSION)
        !           280:         pt=PageTemplateFile('Products/OSA_system/archiveStatus.zpt').__of__(self)
        !           281:         return pt()
        !           282: 
        !           283:         
        !           284: 
        !           285: 
        !           286:     def metachecker(self,path):
        !           287:         """check the metadata the documents in path"""
        !           288:         self.REQUEST.SESSION['path']=self.REQUEST['path']
        !           289:         return archive.metacheck(path)
        !           290: 
        !           291:     ## methods  from OSAS_show
        !           292:     def changeName(self,name):
        !           293:         return changeName(name)
        !           294: 
        !           295:     def hasMetafile(self,path):
        !           296:         return hasMetafile(path)
        !           297: 
        !           298:     def getMetafile(self,path):
        !           299:         return getMetafile(path)
        !           300: 
        !           301:     def toggle_view(self,path,file):
        !           302:         """Oeffnen bzw. schließen der Subfolders"""
        !           303:         self.tree(path).toggle(path,file)
        !           304:         return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+"?path="+path)
        !           305: 
        !           306: 
        !           307: 
        !           308:     def isdigilib2(self,path):
        !           309:         """check if digilib"""
        !           310:         return isdigilib2(path)
        !           311: 
        !           312:     def path_to_link_view(self,path):
        !           313:         """generates navigation bar for viewfiles"""
        !           314:         return path_to_link_view(self.REQUEST['URL'],path)
        !           315:     
        !           316: 
        !           317:     def tree(self,start):
        !           318:    """get the filetree"""
        !           319:    k=browse(start)
        !           320:    return k
        !           321: 
        !           322:     def getfilesystem2(self,start,reload=0):
        !           323:    """load filesystem"""
        !           324: 
        !           325:    k=filesystem2(start,1)
        !           326:    return k
        !           327: 
        !           328:     def getfilesystem(self,start,reload=0):
        !           329:    """load filesystem"""
        !           330: 
        !           331:    k=filesystem(start,1)
        !           332:    return k
        !           333: 
        !           334: 
        !           335:     ##init
        !           336:     def __init__(self, id, title,startPath):
        !           337:         """init"""
        !           338:         self.id=id
        !           339:         self.title=title
        !           340:         self.startPath=startPath
        !           341: 
        !           342:     def archiver_html(self):
        !           343:         """archiver"""
        !           344:         pt=PageTemplateFile('Products/OSA_system/OSAS_Archiver.zpt').__of__(self)
        !           345:         return pt()
        !           346: 
        !           347:     def index_html(self):
        !           348:         """main page"""
        !           349:         pt=PageTemplateFile('Products/OSA_system/archiverIndex.zpt').__of__(self)
        !           350:         return pt()
        !           351: 
        !           352:     def getDate(self):
        !           353:         """date"""
        !           354:         return time.strftime("%Y-%m-%d",time.localtime())
        !           355:     
        !           356:     def newFolders_html(self):
        !           357:         """main page"""
        !           358:         pt=PageTemplateFile('Products/OSA_system/newFolders.zpt').__of__(self)
        !           359:         return pt()
        !           360: 
        !           361:     def getProducers(self):
        !           362:         """Ausgabe der registrierten Benutzer"""
        !           363:         ret=[]
        !           364:         #x=7
        !           365:         id=self.producerFolder.getId()
        !           366:         for list in self.producerFolder.__dict__:
        !           367:             obj=getattr(self.producerFolder,list)
        !           368:             if (hasattr(obj,"meta_type")):
        !           369:                 if (obj.meta_type=="OSAS_producer"):
        !           370:                     ret.append(obj.getId())
        !           371:         return ret
        !           372: 
        !           373:     def getProducer(self,id):
        !           374:         """Gebe ProducerObjekt zurück"""
        !           375:         obj=getattr(self.aq_parent.producerFolder,id)
        !           376:         return obj
        !           377:         
        !           378:         
        !           379: 
        !           380:     def createFoldersForm(self,producer,number):
        !           381:         """Erzeuge Folder im producer Verzeichnis mit ids"""
        !           382:         self.REQUEST.SESSION['producer']=producer
        !           383:         self.REQUEST.SESSION['ids']=self.idGenerator.giveIdsOut(number)
        !           384:         pt=PageTemplateFile('Products/OSA_system/createFoldersForm.zpt').__of__(self)
        !           385:         return pt()
        !           386:     
        !           387:     def createFolders(self,folderList,producer):
        !           388:         """Erzeug die entsprechenden Folder"""
        !           389:         for folder in folderList:
        !           390:             os.mkdir(self.startPath+"/"+producer+"/"+folder)
        !           391:         self.REQUEST.SESSION['folderList']=folderList
        !           392:         pt=PageTemplateFile('Products/OSA_system/createFolders.zpt').__of__(self)
        !           393:         return pt()
        !           394: 
        !           395:     def storeerror(self,ret,path,context,i):
        !           396:         """store an error"""
        !           397:         session=context.REQUEST.SESSION
        !           398:         session['error%i'%i]=ret
        !           399:         session['path%i'%i]=path
        !           400:      
        !           401:         return 'error?number=%i'%i
        !           402: 
        !           403:     def geterror(self,str,context):
        !           404:         session=context.REQUEST.SESSION
        !           405:         return session[str]
        !           406: 
        !           407:     def readfile(self,path):
        !           408:         
        !           409:         ret=""
        !           410:         f=open(path,'r')
        !           411:         for g in f.readlines():
        !           412:             ret=ret+g
        !           413:         return ret
        !           414:      
        !           415:     def writefile(self,path,txt,REQUEST):
        !           416:         f=open(path,'w')
        !           417:         f.write(txt)
        !           418:         f.close()
        !           419:         rval=self.aq_acquire('archive2')
        !           420:         return rval()
        !           421: 
        !           422:     def error(self):
        !           423:         """view errors"""
        !           424:         pt=PageTemplateFile('Products/OSA_system/processViewerError.zpt').__of__(self)
        !           425:         return pt()
        !           426: 
        !           427:     
        !           428:     def archiveSelected(self):
        !           429:         """Archiviere ausgewaehlte files"""
        !           430:         pt=PageTemplateFile('Products/OSA_system/archiveSelected.zpt').__of__(self)
        !           431:         return pt()
        !           432: 
        !           433:     def enterAcquisitionMetadata(self):
        !           434:         """Erstelle Metadaten fuer Acquisition"""
        !           435: 
        !           436:     def enterPreliminaryBibMeta(self):
        !           437:         """Erstelle Metadaten fuer Bibliography"""
        !           438:         
        !           439:     def showFilesForArchiving(self):
        !           440:         """Anzeige der noch zu archivieren Files"""
        !           441: 
        !           442:         
        !           443: 
        !           444:     
        !           445: 
        !           446: def manage_AddOSAS_archiverForm(self):
        !           447:     """interface for adding the OSAS_root"""
        !           448:     pt=PageTemplateFile('Products/OSA_system/AddOSAS_archiver.zpt').__of__(self)
        !           449:     return pt()
        !           450: 
        !           451: 
        !           452: def manage_AddOSAS_archiver(self,id,startPath,title="",RESPONSE=None):
        !           453:     """add the OSAS_root"""
        !           454:     if title=="":
        !           455:         title=id
        !           456:         
        !           457:     newObj=OSAS_archiver(id, title,startPath)
        !           458:     self._setObject(id,newObj)
        !           459:     if RESPONSE is not None:
        !           460:         RESPONSE.redirect('manage_main')
        !           461: 
        !           462: 
        !           463: class OSAS_producer(SimpleItem,Persistent,Implicit):
        !           464:     """Klasse fuer Produzenteninformationen
        !           465:     Metadaten nach  V1.1.1"""
        !           466: 
        !           467:     meta_type="OSAS_producer"
        !           468: 
        !           469:     def __init__(self,shortName,fullName,address="",url="",contact=""):
        !           470: 
        !           471:         self.id=shortName
        !           472:         self.title=fullName
        !           473:         self.address=address
        !           474:         self.url=url
        !           475:         self.contact=contact
        !           476: 
        !           477:     manage_options = SimpleItem.manage_options+(
        !           478:         {'label':'Main Config','action':'changeOSAS_producerForm'},
        !           479:         )
        !           480: 
        !           481:     def changeOSAS_producerForm(self):
        !           482:         """change"""
        !           483:         pt=PageTemplateFile('Products/OSA_system/ChangeOSAS_producer.zpt').__of__(self)
        !           484:         return pt()
        !           485: 
        !           486:     def changeOSAS_producer(self,title,address,contact="",url=""):
        !           487:         """change"""
        !           488:         self.title=fullName
        !           489:         self.address=address
        !           490:         self.url=url
        !           491:         self.contact=contact
        !           492: 
        !           493: def manage_AddOSAS_producerForm(self):
        !           494:     """interface for adding the OSAS_root"""
        !           495:     pt=PageTemplateFile('Products/OSA_system/AddOSAS_producer.zpt').__of__(self)
        !           496:     return pt()
        !           497: 
        !           498: 
        !           499: def manage_AddOSAS_producer(self,id,title="",contact="",address="",url="",RESPONSE=None):
        !           500:     """add the OSAS_root"""
        !           501:     if title=="":
        !           502:         title=id
        !           503:         
        !           504:     newObj=OSAS_producer(id, title,address,contact,url)
        !           505:     self._setObject(id,newObj)
        !           506:     if RESPONSE is not None:
        !           507:         RESPONSE.redirect('manage_main')
        !           508: 

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