--- OSAS/OSA_system/OSAS_archiver.py 2004/01/06 14:39:49 1.6 +++ OSAS/OSA_system/OSAS_archiver.py 2006/09/25 13:48:39 1.13 @@ -1,4 +1,8 @@ -# Methoden und Klassen fuer den MPIWG Archiver +""" Methoden und Klassen fuer den MPIWG Archiver +20040303 Zur Zeit nur angepasst and das System des MPIWG +nächste schritte: Konfigurierbarkeit der Metadaten / Konfigurierbarkeit der Server + +""" from OFS.Image import Image from OFS.Folder import Folder @@ -6,8 +10,7 @@ from OFS.SimpleItem import SimpleItem from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate from AccessControl import ClassSecurityInfo -from Globals import InitializeClass -from Globals import Persistent +from Globals import InitializeClass,Persistent,package_home from Acquisition import Implicit from OSAS_show import * from OSAS_helpers import * @@ -31,18 +34,23 @@ class OSAS_archiveInbox(SimpleItem,Persi self.title=title self.pathes=[] - def addPath(self,path): + def addPath(self,path,RESPONSE=None): + """add a path""" today=time.localtime() - self.pathes.append([path,today]) + temp=self.pathes[0:] + temp.append([path,today]) + self.pathes=temp[0:] + if RESPONSE: + RESPONSE.redirect("index_html") def index_html(self): """main""" - pt=PageTemplateFile('Products/OSA_system/OSAS_archiveInboxIndex.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_archiveInboxIndex.zpt')).__of__(self) return pt() def manage_AddOSAS_archiveInboxForm(self): """interface for adding the OSAS_root""" - pt=PageTemplateFile('Products/OSA_system/AddOSAS_archiveInbox.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_archiveInbox.zpt')).__of__(self) return pt() @@ -70,10 +78,12 @@ class OSAS_metadataOrganizer(SimpleItem, 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')], 'Journal Article':[('author','opt'),('year','opt'),('title','opt'),('journal','opt'),('volume','opt'),('issue','opt'),('pages','opt'),('alternate journal','opt'),('call number','opt')], - 'Manuscript':[('author','opt'),('year','opt'),('title','opt'),('location','opt'),('signature','opt'),('pages','opt'),('editorial remarks','opt'),('description','opt'),('keywords','opt')]} + 'Manuscript':[('author','opt'),('year','opt'),('title','opt'),('location','opt'),('signature','opt'),('pages','opt'),('editorial remarks','opt'),('description','opt'),('keywords','opt')], + 'Journal Volume':[('title','opt'),('editor','opt'),('year','opt'),('volume','opt'),('number of pages','opt'),('city','opt'),('publisher','opt'),('ISBN ISSN','opt')] + } - referenceTypes=['Book','Journal Article','Manuscript'] + referenceTypes=['Book','Journal Article','Manuscript','Journal Volume'] def __init__(self,id,title): """init""" @@ -96,7 +106,7 @@ class OSAS_metadataOrganizer(SimpleItem, else: self.REQUEST.SESSION['path']=path - pt=PageTemplateFile('Products/OSA_system/inputRessourceData.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','inputRessourceData.zpt')).__of__(self) return pt() @@ -119,14 +129,13 @@ class OSAS_metadataOrganizer(SimpleItem, def addAcquisition(self,path): """Hinzufügen von Acquisition Daten""" self.REQUEST.SESSION['path']=path - pt=PageTemplateFile('Products/OSA_system/inputAcquisitionData.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','inputAcquisitionData.zpt')).__of__(self) return pt() def writeAcquisitionMetadata(self,date,path,media_type,producer="mpiwg",description=""): """Schreibe Acquisiondata in index.meta""" - #schreibe in index.meta subnodes={} subnodes['media-type']=media_type @@ -136,7 +145,7 @@ class OSAS_metadataOrganizer(SimpleItem, subnodes['date']=date subnodes['description']=description - changeNodesInIndexMeta(path,"acquisition",subnodes) + changeNodesInIndexMeta(path,"acquisition",subnodes,parent="meta") #print "HI" subnodes={} @@ -151,15 +160,14 @@ class OSAS_metadataOrganizer(SimpleItem, self.metaDataSet=self.metaDataSets[self.mediaToAcquisition[media_type]] self.media_type=self.mediaToAcquisition[media_type] - pt=PageTemplateFile('Products/OSA_system/inputDocumentMetadata.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','inputDocumentMetadata.zpt')).__of__(self) return pt() def writeDocumentMetadata(self,referenceType): - """write document metadata""" form=self.REQUEST.form -#schreibe in index.meta + #schreibe in index.meta self.bibDataSet=self.bibDataSets[form['referenceType']] self.bibdata_type=form['referenceType'] @@ -167,18 +175,16 @@ class OSAS_metadataOrganizer(SimpleItem, subnodes['device']=form['device'] subnodes['image-type']=form['image-type'] subnodes['production-comment']=form['production-comment'] - changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"image-acquisition",subnodes) + changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"image-acquisition",subnodes,parent="meta") subnodes={} subnodes['dpi']=form['dpi'] + changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"img",subnodes,parent="meta") - - changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"img",subnodes) - - - pt=PageTemplateFile('Products/OSA_system/inputBiblioMetadata.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','inputBiblioMetadata.zpt')).__of__(self) return pt() + def writeBiblioMetadata(self,bibdata_type,RESPONSE=None): """Write all""" #to do write metadata @@ -193,15 +199,11 @@ class OSAS_metadataOrganizer(SimpleItem, #return self.REQUEST return self.addRessourceMeta() - - - - def manage_AddOSAS_metadataOrganizerForm(self): """interface for adding the OSAS_root""" - pt=PageTemplateFile('Products/OSA_system/AddOSAS_metadataOrganizer.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_metadataOrganizer.zpt')).__of__(self) return pt() @@ -228,7 +230,7 @@ class OSAS_processViewer(SimpleItem,Pers def index_html(self): """main page""" - pt=PageTemplateFile('Products/OSA_system/processViewerIndex.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','processViewerIndex.zpt')).__of__(self) return pt() def storeFile(self,something): @@ -267,6 +269,7 @@ class OSAS_processViewer(SimpleItem,Pers return ret def writefile(self,path,txt,REQUEST): + """writefile""" f=open(path,'w') f.write(txt) f.close() @@ -277,17 +280,17 @@ class OSAS_processViewer(SimpleItem,Pers def view(self,number): """view page""" self.errnum=number - pt=PageTemplateFile('Products/OSA_system/processViewerView.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','processViewerView.zpt')).__of__(self) return pt() def error(self): """view errors""" - pt=PageTemplateFile('Products/OSA_system/processViewerError.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','processViewerError.zpt')).__of__(self) return pt() def manage_AddOSAS_processViewerForm(self): """interface for adding the OSAS_processViewer""" - pt=PageTemplateFile('Products/OSA_system/AddOSAS_processViewer.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_processViewer.zpt')).__of__(self) return pt() @@ -312,23 +315,45 @@ class OSAS_archiver(Folder, Persistent,I {'label':'Main Config','action':'changeOSAS_archiverForm'}, ) - # to be deleted later - #startPath="/mpiwg" + def unarchive(self,path): + """unarchive the path""" + f = os.popen("/usr/local/mpiwg/archive/unarchiver "+path,"r") + return f.readlines() + + def checkIfUnarchive(self,path): + if not os.path.exists(path+"/index.meta"): + return 0 + f=file(path+"/index.meta","r").read() + dom=xml.dom.minidom.parseString(f) + archiveStorageDates=dom.getElementsByTagName("archive-storage-date") + if archiveStorageDates: + return 1 + else: + return 0 + ## methoden aus dem alten archive.py - + def isArray(self,path): + """check for array""" + if type(path) == StringType: + return 0 + else: + return 1 + def archiver(self,path): """archive the documents in path""" tmp=archive.archive(path,self.REQUEST.SESSION) - pt=PageTemplateFile('Products/OSA_system/archiveStatus.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','archiveStatus.zpt')).__of__(self) return pt() - + def archive2(self): + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','archive2.zpt')).__of__(self) + return pt() def metachecker(self,path): - """check the metadata the documents in path""" + """check the metadata of the documents in path""" self.REQUEST.SESSION['path']=self.REQUEST['path'] return archive.metacheck(path) @@ -365,7 +390,6 @@ class OSAS_archiver(Folder, Persistent,I def getfilesystem2(self,start,reload=0): """load filesystem""" - k=filesystem2(start,1) return k @@ -385,12 +409,12 @@ class OSAS_archiver(Folder, Persistent,I def archiver_html(self): """archiver""" - pt=PageTemplateFile('Products/OSA_system/OSAS_Archiver.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_Archiver.zpt')).__of__(self) return pt() def index_html(self): """main page""" - pt=PageTemplateFile('Products/OSA_system/archiverIndex.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','archiverIndex.zpt')).__of__(self) return pt() def getDate(self): @@ -399,7 +423,7 @@ class OSAS_archiver(Folder, Persistent,I def newFolders_html(self): """main page""" - pt=PageTemplateFile('Products/OSA_system/newFolders.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','newFolders.zpt')).__of__(self) return pt() def getProducers(self): @@ -416,7 +440,7 @@ class OSAS_archiver(Folder, Persistent,I def getProducer(self,id): """Gebe ProducerObjekt zurück""" - obj=getattr(self.aq_parent.producerFolder,id) + obj=getattr(self.producerFolder,id) return obj @@ -425,24 +449,25 @@ class OSAS_archiver(Folder, Persistent,I """Erzeuge Folder im producer Verzeichnis mit ids""" self.REQUEST.SESSION['producer']=producer self.REQUEST.SESSION['ids']=self.idGenerator.giveIdsOut(number) - pt=PageTemplateFile('Products/OSA_system/createFoldersForm.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','createFoldersForm.zpt')).__of__(self) return pt() def createFolders(self,folderList,producer): """Erzeug die entsprechenden Folder""" #hack - producer="library" + #producer="library" if type(folderList)==StringType: folders=[folderList] else: folders=folderList - + #return producer + producerFolderName=self.getProducer(producer).producerFolderName for folder in folders: - os.mkdir(self.startPath+"/"+producer+"/"+folder) - os.chmod(self.startPath+"/"+producer+"/"+folder,0775) + os.mkdir(self.startPath+"/"+producerFolderName+"/"+folder) + os.chmod(self.startPath+"/"+producerFolderName+"/"+folder,0775) self.REQUEST.SESSION['folderList']=folders - pt=PageTemplateFile('Products/OSA_system/createFolders.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','createFolders.zpt')).__of__(self) return pt() def storeerror(self,ret,path,context,i): @@ -466,21 +491,21 @@ class OSAS_archiver(Folder, Persistent,I return ret def writefile(self,path,txt,REQUEST): + """writefile""" f=open(path,'w') f.write(txt) f.close() - rval=self.aq_acquire('archive2') - return rval() + return self.archive2() def error(self): """view errors""" - pt=PageTemplateFile('Products/OSA_system/processViewerError.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','processViewerError.zpt')).__of__(self) return pt() def archiveSelected(self): """Archiviere ausgewaehlte files""" - pt=PageTemplateFile('Products/OSA_system/archiveSelected.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','archiveSelected.zpt')).__of__(self) return pt() def enterAcquisitionMetadata(self): @@ -495,7 +520,7 @@ class OSAS_archiver(Folder, Persistent,I def changeOSAS_archiverForm(self): """change""" - pt=PageTemplateFile('Products/OSA_system/ChangeOSAS_archiver.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_archiver.zpt')).__of__(self) return pt() def changeOSAS_archiver(self,startPath,title="",RESPONSE=None): @@ -509,7 +534,7 @@ class OSAS_archiver(Folder, Persistent,I def manage_AddOSAS_archiverForm(self): """interface for adding the OSAS_root""" - pt=PageTemplateFile('Products/OSA_system/AddOSAS_archiver.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_archiver.zpt')).__of__(self) return pt() @@ -530,42 +555,47 @@ class OSAS_producer(SimpleItem,Persisten meta_type="OSAS_producer" - def __init__(self,shortName,fullName,address="",url="",contact=""): + def __init__(self,shortName,fullName,producerFolderName,address="",url="",contact=""): self.id=shortName self.title=fullName self.address=address self.url=url self.contact=contact - + self.producerFolderName=producerFolderName + manage_options = SimpleItem.manage_options+( {'label':'Main Config','action':'changeOSAS_producerForm'}, ) def changeOSAS_producerForm(self): """change""" - pt=PageTemplateFile('Products/OSA_system/ChangeOSAS_producer.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_producer.zpt')).__of__(self) return pt() - def changeOSAS_producer(self,title,address,contact="",url=""): + def changeOSAS_producer(self,title,address,producerFolderName,contact="",url="",RESPONSE=None): """change""" - self.title=fullName + self.title=title self.address=address self.url=url self.contact=contact + self.producerFolderName=producerFolderName + if RESPONSE: + RESPONSE.redirect("manage_main") + def manage_AddOSAS_producerForm(self): """interface for adding the OSAS_root""" - pt=PageTemplateFile('Products/OSA_system/AddOSAS_producer.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_producer.zpt')).__of__(self) return pt() -def manage_AddOSAS_producer(self,id,title="",contact="",address="",url="",RESPONSE=None): +def manage_AddOSAS_producer(self,id,producerFolderName,title="",contact="",address="",url="",RESPONSE=None): """add the OSAS_root""" if title=="": title=id - newObj=OSAS_producer(id, title,address,contact,url) + newObj=OSAS_producer(id, title,producerFolderName,address,contact,url) self._setObject(id,newObj) if RESPONSE is not None: RESPONSE.redirect('manage_main')