Diff for /OSAS/OSA_system/OSAS_archiver.py between versions 1.6 and 1.13

version 1.6, 2004/01/06 14:39:49 version 1.13, 2006/09/25 13:48:39
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 *
Line 31  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 70  class OSAS_metadataOrganizer(SimpleItem, Line 78  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')],      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')],                    '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):      def __init__(self,id,title):
         """init"""          """init"""
Line 96  class OSAS_metadataOrganizer(SimpleItem, Line 106  class OSAS_metadataOrganizer(SimpleItem,
         else:          else:
             self.REQUEST.SESSION['path']=path              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()          return pt()
   
                   
Line 119  class OSAS_metadataOrganizer(SimpleItem, Line 129  class OSAS_metadataOrganizer(SimpleItem,
     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"""
                   
           
         #schreibe in index.meta          #schreibe in index.meta
         subnodes={}          subnodes={}
         subnodes['media-type']=media_type          subnodes['media-type']=media_type
Line 136  class OSAS_metadataOrganizer(SimpleItem, Line 145  class OSAS_metadataOrganizer(SimpleItem,
         subnodes['date']=date          subnodes['date']=date
         subnodes['description']=description          subnodes['description']=description
                   
         changeNodesInIndexMeta(path,"acquisition",subnodes)          changeNodesInIndexMeta(path,"acquisition",subnodes,parent="meta")
         #print "HI"          #print "HI"
   
         subnodes={}          subnodes={}
Line 151  class OSAS_metadataOrganizer(SimpleItem, Line 160  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()
   
                   
     def writeDocumentMetadata(self,referenceType):      def writeDocumentMetadata(self,referenceType):
   
         """write document metadata"""          """write document metadata"""
         form=self.REQUEST.form          form=self.REQUEST.form
 #schreibe in index.meta  #schreibe in index.meta
Line 167  class OSAS_metadataOrganizer(SimpleItem, Line 175  class OSAS_metadataOrganizer(SimpleItem,
         subnodes['device']=form['device']          subnodes['device']=form['device']
         subnodes['image-type']=form['image-type']          subnodes['image-type']=form['image-type']
         subnodes['production-comment']=form['production-comment']          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={}
         subnodes['dpi']=form['dpi']          subnodes['dpi']=form['dpi']
           changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"img",subnodes,parent="meta")
   
                   pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','inputBiblioMetadata.zpt')).__of__(self)
         changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"img",subnodes)  
   
   
         pt=PageTemplateFile('Products/OSA_system/inputBiblioMetadata.zpt').__of__(self)  
         return pt()          return pt()
   
   
     def writeBiblioMetadata(self,bibdata_type,RESPONSE=None):      def writeBiblioMetadata(self,bibdata_type,RESPONSE=None):
         """Write all"""          """Write all"""
         #to do write metadata          #to do write metadata
Line 195  class OSAS_metadataOrganizer(SimpleItem, Line 201  class OSAS_metadataOrganizer(SimpleItem,
                   
   
   
       
           
       
   
 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 228  class OSAS_processViewer(SimpleItem,Pers Line 230  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 267  class OSAS_processViewer(SimpleItem,Pers Line 269  class OSAS_processViewer(SimpleItem,Pers
         return ret          return ret
             
     def writefile(self,path,txt,REQUEST):      def writefile(self,path,txt,REQUEST):
           """writefile"""
         f=open(path,'w')          f=open(path,'w')
         f.write(txt)          f.write(txt)
         f.close()          f.close()
Line 277  class OSAS_processViewer(SimpleItem,Pers Line 280  class OSAS_processViewer(SimpleItem,Pers
     def view(self,number):      def view(self,number):
         """view page"""          """view page"""
         self.errnum=number          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()          return pt()
   
     def error(self):      def error(self):
         """view errors"""          """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()          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 312  class OSAS_archiver(Folder, Persistent,I Line 315  class OSAS_archiver(Folder, Persistent,I
         {'label':'Main Config','action':'changeOSAS_archiverForm'},          {'label':'Main Config','action':'changeOSAS_archiverForm'},
         )          )
             
     # to be deleted later      def unarchive(self,path):
     #startPath="/mpiwg"          """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 365  class OSAS_archiver(Folder, Persistent,I Line 390  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 385  class OSAS_archiver(Folder, Persistent,I Line 409  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 399  class OSAS_archiver(Folder, Persistent,I Line 423  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 416  class OSAS_archiver(Folder, Persistent,I Line 440  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 425  class OSAS_archiver(Folder, Persistent,I Line 449  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"""
         #hack          #hack
         producer="library"          #producer="library"
         if type(folderList)==StringType:          if type(folderList)==StringType:
             folders=[folderList]              folders=[folderList]
         else:          else:
             folders=folderList              folders=folderList
                   #return producer
           producerFolderName=self.getProducer(producer).producerFolderName
                   
         for folder in folders:          for folder in folders:
             os.mkdir(self.startPath+"/"+producer+"/"+folder)              os.mkdir(self.startPath+"/"+producerFolderName+"/"+folder)
             os.chmod(self.startPath+"/"+producer+"/"+folder,0775)              os.chmod(self.startPath+"/"+producerFolderName+"/"+folder,0775)
         self.REQUEST.SESSION['folderList']=folders          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()          return pt()
   
     def storeerror(self,ret,path,context,i):      def storeerror(self,ret,path,context,i):
Line 466  class OSAS_archiver(Folder, Persistent,I Line 491  class OSAS_archiver(Folder, Persistent,I
         return ret          return ret
             
     def writefile(self,path,txt,REQUEST):      def writefile(self,path,txt,REQUEST):
           """writefile"""
         f=open(path,'w')          f=open(path,'w')
         f.write(txt)          f.write(txt)
         f.close()          f.close()
         rval=self.aq_acquire('archive2')          return self.archive2()
         return rval()  
   
     def error(self):      def error(self):
         """view errors"""          """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()          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 495  class OSAS_archiver(Folder, Persistent,I Line 520  class OSAS_archiver(Folder, Persistent,I
                   
     def changeOSAS_archiverForm(self):      def changeOSAS_archiverForm(self):
         """change"""          """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()          return pt()
   
     def changeOSAS_archiver(self,startPath,title="",RESPONSE=None):      def changeOSAS_archiver(self,startPath,title="",RESPONSE=None):
Line 509  class OSAS_archiver(Folder, Persistent,I Line 534  class OSAS_archiver(Folder, Persistent,I
   
 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 530  class OSAS_producer(SimpleItem,Persisten Line 555  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 544  class OSAS_producer(SimpleItem,Persisten Line 570  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')

Removed from v.1.6  
changed lines
  Added in v.1.13


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