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

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