version 1.3, 2003/12/23 13:43:10
|
version 1.12, 2005/05/04 14:06:31
|
Line 1
|
Line 1
|
# 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.Image import Image |
from OFS.Folder import Folder |
from OFS.Folder import Folder |
Line 6 from OFS.SimpleItem import SimpleItem
|
Line 10 from OFS.SimpleItem import SimpleItem
|
from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
from Products.PageTemplates.PageTemplate import PageTemplate |
from Products.PageTemplates.PageTemplate import PageTemplate |
from AccessControl import ClassSecurityInfo |
from AccessControl import ClassSecurityInfo |
from Globals import InitializeClass |
from Globals import InitializeClass,Persistent,package_home |
from Globals import Persistent |
|
from Acquisition import Implicit |
from Acquisition import Implicit |
from OSAS_show import * |
from OSAS_show import * |
from OSAS_helpers import * |
from OSAS_helpers import * |
|
from types import * |
|
|
import os.path |
import os.path |
import os |
import os |
Line 30 class OSAS_archiveInbox(SimpleItem,Persi
|
Line 34 class OSAS_archiveInbox(SimpleItem,Persi
|
self.title=title |
self.title=title |
self.pathes=[] |
self.pathes=[] |
|
|
def addPath(self,path): |
def addPath(self,path,RESPONSE=None): |
|
"""add a path""" |
today=time.localtime() |
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): |
def index_html(self): |
"""main""" |
"""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() |
return pt() |
|
|
def manage_AddOSAS_archiveInboxForm(self): |
def manage_AddOSAS_archiveInboxForm(self): |
"""interface for adding the OSAS_root""" |
"""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() |
return pt() |
|
|
|
|
Line 80 class OSAS_metadataOrganizer(SimpleItem,
|
Line 89 class OSAS_metadataOrganizer(SimpleItem,
|
self.title=title |
self.title=title |
#self.acquisitionData=['provider_name','provider_address','provider_contact','provider_url','date','description'] |
#self.acquisitionData=['provider_name','provider_address','provider_contact','provider_url','date','description'] |
|
|
|
|
|
def getName(self): |
|
"""gives name from request session path""" |
|
path=self.REQUEST.SESSION['path'] |
|
splitted=path.split("/") |
|
return splitted[len(splitted)-1] |
|
|
|
def addRessourceMeta(self,path=None,RESPONSE=None): |
|
"""Metadaten fuer Ressource""" |
|
if not path: |
|
path=self.REQUEST.SESSION['path'] |
|
|
|
else: |
|
self.REQUEST.SESSION['path']=path |
|
|
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','inputRessourceData.zpt')).__of__(self) |
|
return pt() |
|
|
|
|
|
def writeRessourceMetadata(self,name,date,description,creator,RESPONSE=None): |
|
"""schreibe Resourcedata in index.meta""" |
|
|
|
path=self.REQUEST.SESSION['path'] |
|
|
|
subnodes={} |
|
subnodes['name']=name |
|
subnodes['archive-creation-date']=date |
|
subnodes['creator']=creator |
|
subnodes['description']=description |
|
|
|
changeNodesInIndexMeta(path,"",subnodes) |
|
self.inbox.addPath(self.REQUEST.SESSION['path']) |
|
RESPONSE.redirect(self.REQUEST['URL2']) |
|
|
|
|
def addAcquisition(self,path): |
def addAcquisition(self,path): |
"""Hinzufügen von Acquisition Daten""" |
"""Hinzufügen von Acquisition Daten""" |
self.REQUEST.SESSION['path']=path |
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() |
return pt() |
|
|
|
|
def writeAcquisitionMetadata(self,date,path,media_type,producer="mpiwg",description=""): |
def writeAcquisitionMetadata(self,date,path,media_type,producer="mpiwg",description=""): |
"""Schreibe Acquisiondata in index.meta""" |
"""Schreibe Acquisiondata in index.meta""" |
|
|
Line 114 class OSAS_metadataOrganizer(SimpleItem,
|
Line 159 class OSAS_metadataOrganizer(SimpleItem,
|
self.metaDataSet=self.metaDataSets[self.mediaToAcquisition[media_type]] |
self.metaDataSet=self.metaDataSets[self.mediaToAcquisition[media_type]] |
self.media_type=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() |
return pt() |
|
|
|
|
Line 139 class OSAS_metadataOrganizer(SimpleItem,
|
Line 184 class OSAS_metadataOrganizer(SimpleItem,
|
changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"img",subnodes) |
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() |
return pt() |
|
|
def writeBiblioMetadata(self,bibdata_type,RESPONSE=None): |
def writeBiblioMetadata(self,bibdata_type,RESPONSE=None): |
Line 151 class OSAS_metadataOrganizer(SimpleItem,
|
Line 196 class OSAS_metadataOrganizer(SimpleItem,
|
#for key in form.keys(): |
#for key in form.keys(): |
# subnodes[key]=form['device'] |
# subnodes[key]=form['device'] |
subnodes=form |
subnodes=form |
|
del subnodes['bibdata_type'] #in form but not metadata |
changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"bib",subnodes,nodeAttributes={'type':bibdata_type},parent="meta") |
changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"bib",subnodes,nodeAttributes={'type':bibdata_type},parent="meta") |
self.inbox.addPath(self.REQUEST.SESSION['path']) |
#return self.REQUEST |
RESPONSE.redirect(self.REQUEST['URL2']) |
return self.addRessourceMeta() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def manage_AddOSAS_metadataOrganizerForm(self): |
def manage_AddOSAS_metadataOrganizerForm(self): |
"""interface for adding the OSAS_root""" |
"""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() |
return pt() |
|
|
|
|
Line 190 class OSAS_processViewer(SimpleItem,Pers
|
Line 232 class OSAS_processViewer(SimpleItem,Pers
|
|
|
def index_html(self): |
def index_html(self): |
"""main page""" |
"""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() |
return pt() |
|
|
def storeFile(self,something): |
def storeFile(self,something): |
Line 198 class OSAS_processViewer(SimpleItem,Pers
|
Line 240 class OSAS_processViewer(SimpleItem,Pers
|
self.REQUEST.SESSION['something']=something |
self.REQUEST.SESSION['something']=something |
return 1 |
return 1 |
|
|
def getFile(self): |
def getFile(self,number): |
"""get info from session""" |
"""get info from session""" |
return self.REQUEST.SESSION['something'] |
check=self.getoverview('/var/tmp/archiver').messages()[number] |
|
return check |
|
|
def getoverview(self,path): |
def getoverview(self,path): |
"""get overview""" |
"""get overview""" |
Line 214 class OSAS_processViewer(SimpleItem,Pers
|
Line 257 class OSAS_processViewer(SimpleItem,Pers
|
|
|
return 'error?number=%i'%i |
return 'error?number=%i'%i |
|
|
def view(self): |
def geterror(self,str,context): |
|
session=context.REQUEST.SESSION |
|
return session[str] |
|
|
|
|
|
def readfile(self,path): |
|
|
|
ret="" |
|
f=open(path,'r') |
|
for g in f.readlines(): |
|
ret=ret+g |
|
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() |
|
|
|
|
|
def view(self,number): |
"""view page""" |
"""view page""" |
pt=PageTemplateFile('Products/OSA_system/processViewerView.zpt').__of__(self) |
self.errnum=number |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','processViewerView.zpt')).__of__(self) |
|
return pt() |
|
|
|
def error(self): |
|
"""view errors""" |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','processViewerError.zpt')).__of__(self) |
return pt() |
return pt() |
|
|
def manage_AddOSAS_processViewerForm(self): |
def manage_AddOSAS_processViewerForm(self): |
"""interface for adding the OSAS_processViewer""" |
"""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() |
return pt() |
|
|
|
|
Line 242 class OSAS_archiver(Folder, Persistent,I
|
Line 313 class OSAS_archiver(Folder, Persistent,I
|
|
|
meta_type="OSAS_archiver" |
meta_type="OSAS_archiver" |
|
|
# to be deleted later |
manage_options = Folder.manage_options+( |
#startPath="/mpiwg" |
{'label':'Main Config','action':'changeOSAS_archiverForm'}, |
|
) |
|
|
|
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 |
## 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): |
def archiver(self,path): |
"""archive the documents in path""" |
"""archive the documents in path""" |
tmp=archive.archive(path,self.REQUEST.SESSION) |
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() |
return pt() |
|
|
|
def archive2(self): |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','archive2.zpt')).__of__(self) |
|
return pt() |
|
|
|
|
def metachecker(self,path): |
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'] |
self.REQUEST.SESSION['path']=self.REQUEST['path'] |
return archive.metacheck(path) |
return archive.metacheck(path) |
|
|
Line 295 class OSAS_archiver(Folder, Persistent,I
|
Line 392 class OSAS_archiver(Folder, Persistent,I
|
|
|
def getfilesystem2(self,start,reload=0): |
def getfilesystem2(self,start,reload=0): |
"""load filesystem""" |
"""load filesystem""" |
|
|
k=filesystem2(start,1) |
k=filesystem2(start,1) |
return k |
return k |
|
|
Line 315 class OSAS_archiver(Folder, Persistent,I
|
Line 411 class OSAS_archiver(Folder, Persistent,I
|
|
|
def archiver_html(self): |
def archiver_html(self): |
"""archiver""" |
"""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() |
return pt() |
|
|
def index_html(self): |
def index_html(self): |
"""main page""" |
"""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() |
return pt() |
|
|
def getDate(self): |
def getDate(self): |
Line 329 class OSAS_archiver(Folder, Persistent,I
|
Line 425 class OSAS_archiver(Folder, Persistent,I
|
|
|
def newFolders_html(self): |
def newFolders_html(self): |
"""main page""" |
"""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() |
return pt() |
|
|
def getProducers(self): |
def getProducers(self): |
Line 346 class OSAS_archiver(Folder, Persistent,I
|
Line 442 class OSAS_archiver(Folder, Persistent,I
|
|
|
def getProducer(self,id): |
def getProducer(self,id): |
"""Gebe ProducerObjekt zurück""" |
"""Gebe ProducerObjekt zurück""" |
obj=getattr(self.aq_parent.producerFolder,id) |
obj=getattr(self.producerFolder,id) |
return obj |
return obj |
|
|
|
|
Line 355 class OSAS_archiver(Folder, Persistent,I
|
Line 451 class OSAS_archiver(Folder, Persistent,I
|
"""Erzeuge Folder im producer Verzeichnis mit ids""" |
"""Erzeuge Folder im producer Verzeichnis mit ids""" |
self.REQUEST.SESSION['producer']=producer |
self.REQUEST.SESSION['producer']=producer |
self.REQUEST.SESSION['ids']=self.idGenerator.giveIdsOut(number) |
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() |
return pt() |
|
|
def createFolders(self,folderList,producer): |
def createFolders(self,folderList,producer): |
"""Erzeug die entsprechenden Folder""" |
"""Erzeug die entsprechenden Folder""" |
for folder in folderList: |
#hack |
os.mkdir(self.startPath+"/"+producer+"/"+folder) |
#producer="library" |
self.REQUEST.SESSION['folderList']=folderList |
if type(folderList)==StringType: |
pt=PageTemplateFile('Products/OSA_system/createFolders.zpt').__of__(self) |
folders=[folderList] |
|
else: |
|
folders=folderList |
|
#return producer |
|
producerFolderName=self.getProducer(producer).producerFolderName |
|
|
|
for folder in folders: |
|
os.mkdir(self.startPath+"/"+producerFolderName+"/"+folder) |
|
os.chmod(self.startPath+"/"+producerFolderName+"/"+folder,0775) |
|
self.REQUEST.SESSION['folderList']=folders |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','createFolders.zpt')).__of__(self) |
return pt() |
return pt() |
|
|
|
def storeerror(self,ret,path,context,i): |
|
"""store an error""" |
|
session=context.REQUEST.SESSION |
|
session['error%i'%i]=ret |
|
session['path%i'%i]=path |
|
|
|
return 'error?number=%i'%i |
|
|
|
def geterror(self,str,context): |
|
session=context.REQUEST.SESSION |
|
return session[str] |
|
|
|
def readfile(self,path): |
|
|
|
ret="" |
|
f=open(path,'r') |
|
for g in f.readlines(): |
|
ret=ret+g |
|
return ret |
|
|
|
def writefile(self,path,txt,REQUEST): |
|
"""writefile""" |
|
f=open(path,'w') |
|
f.write(txt) |
|
f.close() |
|
return self.archive2() |
|
|
|
def error(self): |
|
"""view errors""" |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','processViewerError.zpt')).__of__(self) |
|
return pt() |
|
|
|
|
def archiveSelected(self): |
def archiveSelected(self): |
"""Archiviere ausgewaehlte files""" |
"""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() |
return pt() |
|
|
def enterAcquisitionMetadata(self): |
def enterAcquisitionMetadata(self): |
Line 381 class OSAS_archiver(Folder, Persistent,I
|
Line 520 class OSAS_archiver(Folder, Persistent,I
|
"""Anzeige der noch zu archivieren Files""" |
"""Anzeige der noch zu archivieren Files""" |
|
|
|
|
|
def changeOSAS_archiverForm(self): |
|
"""change""" |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_archiver.zpt')).__of__(self) |
|
return pt() |
|
|
|
def changeOSAS_archiver(self,startPath,title="",RESPONSE=None): |
|
"""change""" |
|
self.startPath=startPath |
|
self.title=title |
|
|
|
if RESPONSE is not None: |
|
RESPONSE.redirect('manage_main') |
|
|
|
|
def manage_AddOSAS_archiverForm(self): |
def manage_AddOSAS_archiverForm(self): |
"""interface for adding the OSAS_root""" |
"""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() |
return pt() |
|
|
|
|
Line 407 class OSAS_producer(SimpleItem,Persisten
|
Line 557 class OSAS_producer(SimpleItem,Persisten
|
|
|
meta_type="OSAS_producer" |
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.id=shortName |
self.title=fullName |
self.title=fullName |
self.address=address |
self.address=address |
self.url=url |
self.url=url |
self.contact=contact |
self.contact=contact |
|
self.producerFolderName=producerFolderName |
|
|
manage_options = SimpleItem.manage_options+( |
manage_options = SimpleItem.manage_options+( |
{'label':'Main Config','action':'changeOSAS_producerForm'}, |
{'label':'Main Config','action':'changeOSAS_producerForm'}, |
Line 421 class OSAS_producer(SimpleItem,Persisten
|
Line 572 class OSAS_producer(SimpleItem,Persisten
|
|
|
def changeOSAS_producerForm(self): |
def changeOSAS_producerForm(self): |
"""change""" |
"""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() |
return pt() |
|
|
def changeOSAS_producer(self,title,address,contact="",url=""): |
def changeOSAS_producer(self,title,address,producerFolderName,contact="",url="",RESPONSE=None): |
"""change""" |
"""change""" |
self.title=fullName |
self.title=title |
self.address=address |
self.address=address |
self.url=url |
self.url=url |
self.contact=contact |
self.contact=contact |
|
self.producerFolderName=producerFolderName |
|
|
|
if RESPONSE: |
|
RESPONSE.redirect("manage_main") |
|
|
def manage_AddOSAS_producerForm(self): |
def manage_AddOSAS_producerForm(self): |
"""interface for adding the OSAS_root""" |
"""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() |
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""" |
"""add the OSAS_root""" |
if title=="": |
if title=="": |
title=id |
title=id |
|
|
newObj=OSAS_producer(id, title,address,contact,url) |
newObj=OSAS_producer(id, title,producerFolderName,address,contact,url) |
self._setObject(id,newObj) |
self._setObject(id,newObj) |
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |